0

while True我需要每隔 5 秒在一个循环内执行一段代码。我知道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 的方式来做到这一点?

4

1 回答 1

2

使用sleep功能:

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

def foo(vals):
    print vals

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

于 2014-09-21T09:36:42.633 回答