首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Threading.Timer(5,函数)每5秒启动一次

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

Stack Overflow用户
提问于 2017-08-14 23:25:25
回答 2查看 10.4K关注 0票数 4

我很难使用线程中的Timer函数。

基本上,当我的程序启动时,我希望每x秒钟记录一次统计数据。

所以我想我可以用Timer函数来完成这个任务(每5秒启动一次)。

现在,我做到了:

代码语言:javascript
复制
from threading import Timer
def startLogger():
    while True:
        t = Timer(5, function)
        t.start()


def function():
    print("hey")

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

RuntimeError: can't start new thread

如果有人能给我一条线索,我们会很感激的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-14 23:40:54

您可以尝试以下方法。这样做的想法是,您正在将下一个函数调用安排在该函数主体的末尾:

代码语言:javascript
复制
import threading

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

mylog()
票数 7
EN

Stack Overflow用户

发布于 2017-08-14 23:37:15

与每5秒启动一个新线程不同,您可以创建一个线程并从那里运行所有代码。

代码语言:javascript
复制
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秒内停止主线程。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45684451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档