Python threading.timer - 每'n'秒重复一次函数 [英] Python threading.timer - repeat function every 'n' seconds

查看:70
本文介绍了Python threading.timer - 每'n'秒重复一次函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想每 0.5 秒触发一次函数,并且能够启动、停止和重置计时器.我不太了解 Python 线程的工作原理,并且在使用 Python 计时器时遇到了困难.

I want to fire off a function every 0.5 seconds and be able to start and stop and reset the timer. I'm not too knowledgeable of how Python threads work and am having difficulties with the python timer.

但是,当我执行 threading.timer.start() 两次时,我不断收到 RuntimeError: 线程只能启动一次.有解决办法吗?我尝试在每次开始之前应用 threading.timer.cancel().

However, I keep getting RuntimeError: threads can only be started once when I execute threading.timer.start() twice. Is there a work around for this? I tried applying threading.timer.cancel() before each start.

伪代码:

t=threading.timer(0.5,function)
while True:
    t.cancel()
    t.start()

推荐答案

最好的方法是启动定时器线程一次.在您的计时器线程中,您将编写以下代码

The best way is to start the timer thread once. Inside your timer thread you'd code the following

class MyThread(Thread):
    def __init__(self, event):
        Thread.__init__(self)
        self.stopped = event

    def run(self):
        while not self.stopped.wait(0.5):
            print("my thread")
            # call a function

在启动计时器的代码中,您可以设置停止事件来停止计时器.

In the code that started the timer, you can then set the stopped event to stop the timer.

stopFlag = Event()
thread = MyThread(stopFlag)
thread.start()
# this will stop the timer
stopFlag.set()

这篇关于Python threading.timer - 每'n'秒重复一次函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆