java从1开始计时用线程_java – Python – 线程,计时或函数使用?
我正在制定一個關于如何解決這個問題的想法.請幫忙.
我的項目包含一個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 – 线程,计时或函数使用?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python基础(四)--字典与集合
- 下一篇: wp博客链接.html,WordPres