我很难使用线程中的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
如果有人能给我一条线索,我们会很感激的!
发布于 2017-08-14 23:40:54
您可以尝试以下方法。这样做的想法是,您正在将下一个函数调用安排在该函数主体的末尾:
import threading
def mylog():
print "hey"
` threading.Timer(5.0, mylog)`.start()
mylog()发布于 2017-08-14 23:37:15
与每5秒启动一个新线程不同,您可以创建一个线程并从那里运行所有代码。
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秒内停止主线程。
https://stackoverflow.com/questions/45684451
复制相似问题