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