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

时间:2017-08-14 23:25:26

标签: 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")

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

RuntimeError: can't start new thread

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

2 个答案:

答案 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()