无限循环中的Python周期性任务



我需要每隔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

有什么Python的方法可以做到这一点吗?

使用sleep函数:

import time
def input(self):
      vals = []
      while True:
           # fill the vals
           foo(vals)
           time.sleep(5)
def foo(vals):
    print vals

请注意,只有当运行该命令所需的时间可以忽略不计时,该命令才会每5秒运行一次。

相关内容

  • 没有找到相关文章

最新更新