[英]Python periodic task inside an infinite loop
我需要每隔5秒while True
循環中執行一段代碼。 我知道threading.Timer(5, foo).start()
將每5秒運行一次,但是我的foo()
函數取決於while
循環中的變量。
foo
實際上是在另一個線程上運行的,我不想為了計時而阻塞當前線程。
+------------------------while #main-thread---------------------------------
|
+..........foo(val)..........foo(val)...........foo(val)............foo(val)
-5s- -5s- -5s- -5s-
像這樣:
def input(self):
vals = []
while True:
# fill the vals
# run `foo(vals)` every 5 seconds
def foo(vals):
print vals
有沒有Pythonic的方法可以做到這一點?
使用sleep
功能:
import time
def input(self):
vals = []
while True:
# fill the vals
foo(vals)
time.sleep(5)
def foo(vals):
print vals
請注意,只有在運行所需的時間本身可以忽略的情況下,該命令才每5秒准確運行一次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.