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

Fra*_*lle 4 python timer python-multithreading

我在使用Timer线程功能时遇到了困难。

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

所以我想我可以用这个Timer函数来做(每 5 秒启动一次函数)。

现在,我做了:

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


def function():
    print("hey")
Run Code Online (Sandbox Code Playgroud)

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

RuntimeError: can't start new thread

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

Chr*_*roa 9

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

from time import sleep
from threading import Thread

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

def function():
    print("hey")

Thread(target=startLogger).start()
Run Code Online (Sandbox Code Playgroud)

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

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


pka*_*zak 6

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

import threading

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

mylog()
Run Code Online (Sandbox Code Playgroud)