2017-08-14 131 views
0

我正在努力使用线程的Timer函数。Threading.Timer(5,函数)每5秒发射一次

基本上,当我的程序启动时,我想记录每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

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

回答

1

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

import threading 

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

mylog() 
2

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

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秒。