[英]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.