我在使用线程的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
如果有人能给我一些线索,我们将不胜感激!
答案 0 :(得分:4)
您可以只创建一个线程并从那里运行所有代码,而不是每五秒钟启动一个新线程。
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秒。
答案 1 :(得分:1)
您可以尝试以下操作。我们的想法是,你正在安排下一个函数调用,就在这个函数体的末尾:
import threading
def mylog():
print "hey"
` threading.Timer(5.0, mylog)`.start()
mylog()