簡體   English   中英

無限循環內的Python定期任務

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM