我正在制定一个关于如何解决这个问题的想法.请帮忙.

我的项目包含一个N x N网格,其中包含一系列块,这些块应该在随机方向和随机速度内移动(每隔0.1秒,块的位置用速度更新).我有三个“特殊”块,预计会有各自的移动功能.我将有其他块(其中许多)除了更新它们的位置之外什么都不做,并确保它们保留在网格中.

现在这三个块具有超出移动的功能,但是每个块都单独运行,等待另一个块的特殊功能完成(块2将在块1上等待,块3将等待2并将其设置回块1等.这个排序队列将在运动发生时运行.我希望议案永不停止.在每个块的非移动函数运行n次后,代码完成.

我的问题是:我应该使用线程来启动和停止非移动函数,还是有一种方法可以设置一个时间并设置在.1秒后可以使用类函数的布尔值来连续移动对象(显然循环遍历),然后使用计数一起结束程序?如果是这样,你将如何在Python中编写main函数?对于所有这一切,有人认为Java在运行时会比Python快得多,特别是在将数据写入.txt文件时吗?

解决方法:

您最好的选择可能是在单个更新函数中同时处理所有这些,而不是尝试使用线程.这主要是因为Global Interpreter Lock将阻止多个线程同时处理.你之后的是这样的:

def tick():

for box in randomBoxes:

box.relocate()

specialBlock1.relocate()

specialBlock2.relocate()

specialBlock3.relocate()

然后我们定义第二个函数,它将无限期地运行我们的第一个函数:

def worker():

while True:

tick()

sleep(0.1)

现在我们有一个间隔或排序,我们将启动一个在后台运行并处理我们的显示更新的线程.

from threading import Thread

t = Thread(target = worker, name = "Grid Worker")

t.daemon = True # Useful when this thread is not the main thread.

t.start()

在我们的tick()函数中,我们已经满足了specialBlocks 1,2和3按设定顺序工作的要求.其他箱子各自采取行动,不管其他人做什么.

标签:python,java,multithreading,timing

来源: https://codeday.me/bug/20190704/1380853.html

java从1开始计时用线程_java – Python – 线程,计时或函数使用?相关推荐

  1. java 线程组和线程_Java多线程 线程组原理及实例详解

    线程组 线程组可以批量管理线程和线程组对象. 一级关联 例子如下,建立一级关联. public class MyThread43 implements Runnable{ public void ru ...

  2. java 线程中创建线程_java – 在线程中创建线程 – 良好的做​​法?

    参见英文答案 > Threads within threads in Java?                                    4个 在线程中启动线程是一种好习惯吗?我搜 ...

  3. java中断线程_Java中断线程的方法

    使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回.这 ...

  4. java自定义线程_Java自定义线程池详解

    自定义线程池的核心:ThreadPoolExecutor 为了更好的控制多线程,JDK提供了一套线程框架Executor,帮助开发人员有效的进行线程控制,其中在java.util.concurrent ...

  5. java 事务管理 子父线程_java父线程子线程(转)

    问:在父线程中New了一个子线程,想在停止父线程时也停止子线程,应该怎么做? 答: 从某种程度上讲,做不到. 不管是父线程还是子线程,这只不过是在运行时谁建了谁时用的,一旦所谓的字线程被启动,这两个线 ...

  6. java进程线程_Java进程线程笔记

    什么是并行和并发? 并发和并行是即相似又有区别:(微观) 并行:指两个或多个事件在同一时刻发生: 强调的是时间点. 并发:指两个或多个事件在同一时间段内发生: 强调的是时间段. 进程和线程的区别? 进 ...

  7. java 父线程_Java父线程(或是主线程)等待所有子线程退出的实例

    导读热词 实例如下: static void testLock1(){ final AtomicInteger waitCount = new AtomicInteger(30000); final ...

  8. java for(o t :object) 获取顺序号_java中线程的生命周期

    线程是java中绕不过去的一个话题, 今天本文将会详细讲解java中线程的生命周期,希望可以给大家一些启发. java中Thread的状态 java中Thread有6种状态,分别是: NEW – 新创 ...

  9. java for循环创建线程_Java创建线程的两种方法

    大多数情况,通过实例化一个Thread对象来创建一个线程.Java定义了两种方式: 实现Runnable 接口: 可以继承Thread类. 下面的两小节依次介绍了每一种方式. 实现Runnable接口 ...

最新文章

  1. Java知识积累——String引用的判断问题
  2. 一个人越来越有出息的7大迹象
  3. rsync 安装使用详解
  4. Python教程:zip 函数的用法
  5. VUE初始化一个项目
  6. centof7无法上网问题
  7. com.github.pagehelper.PageHelper cannot be cast to org.apache.ibatis.plugin.Interceptor和oracle不识别
  8. 计算可靠度编制matlab,工程结构可靠度计算的Matlab实现
  9. Android长截屏(滚动截屏)实现原理
  10. java opencv 人脸相似度_java实现OpenCV 4.1.0人脸相似度对比
  11. 公式计算机实现,数学公式的计算机表达(精选).doc
  12. www.gvlib video.php,求大佬帮忙
  13. Mac系统安装/升级 Git
  14. Outlook创建不了Skype会议的解决方案
  15. 无线Mesh网络技术基础与应用
  16. 插入数据时出现Duplicate entry ‘XXX‘ for key ‘XXX‘
  17. 一文读懂网站SEO优化国际版
  18. php mql获取结果集,mql查询删除更新嵌入求指导php
  19. java 取10位时间戳_java里Date 10位时间戳(Timestamp) String 相互转换
  20. 腾讯应届生怒怼“加班文化”:产品晚一天上线,公司会倒闭吗?腾讯回应:会认真反思,尽快整改!...

热门文章

  1. C++ 版本ORM访问数据库之ODB访问oracle的Demo(三)
  2. [UWP]做个调皮的BusyIndicator
  3. shell--基本语法
  4. 高效开发--crm开发有悟
  5. protocol(协议) 和 delegate(委托)也叫(代理)---辨析
  6. 哇塞,打开一个页面访问了这么多次数据库??
  7. 嵌入式 Linux下永久生效环境变量bashrc
  8. 音频系统,Alsa 里面的buff 是怎么计算的?
  9. 一种简单、实用的测量程序运行时间的方法
  10. Android系统架构开篇