Threading.Timer(5, function) 每 5 秒启动一次

Threading.Timer(5, function) launch every 5 second

我很难使用线程中的 Timer 函数。

基本上,当我的程序启动时,我想每隔 x 秒记录一次统计数据。

所以我想我可以使用 Timer 函数(每 5 秒启动一次函数)。

现在,我做到了:

from threading import Timer
def startLogger():
    while True:
        t = Timer(5, function)
        t.start()


def function():
    print("hey")

但是启动出错,所以我认为这不是一个好方法。

RuntimeError: can't start new thread

如果有人能给我线索,将不胜感激!

您可以只创建一个线程,然后 运行 从那里开始所有代码,而不是每五秒启动一个新线程。

from time import sleep
from threading import Thread

def startLogger():
    while True:
        function()
        sleep(5)

def function():
    print("hey")

Thread(target=startLogger).start()

startLogger 将继续运行。它会调用 function,然后暂停 5 秒,然后重新开始,调用 function 等等。

它进入自己的线程,因此 sleep(5) 不会同时停止您的主线程 5 秒。

您可以尝试以下方法。这个想法是,您要在此函数主体的末尾安排下一个函数调用:

import threading

def mylog():
  print "hey"
` threading.Timer(5.0, mylog)`.start()

mylog()