当前位置: 首页 > 面试题库 >

Python threading.timer-每'n'秒重复一次函数

萧永长
2023-03-14
问题内容

我想每0.5秒触发一次功能,并且能够启动,停止和重置计时器。我不太了解Python线程的工作方式,并且在使用python计时器时遇到了困难。

但是,RuntimeError: threads can only be started once当我执行threading.timer.start()两次时,我会不断得到帮助。有没有解决的办法?我尝试threading.timer.cancel()在每次开始之前申请。

伪代码:

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

问题答案:

最好的方法是一次启动计时器线程。在计时器线程中,你需要编写以下代码

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

然后,在启动计时器的代码中,可以set停止事件来停止计时器。

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


 类似资料:
  • 问题内容: 我正在使用WOW.js和animate.css,现在我正在将CSS运行到Infinite。我想知道如何让我的课程在3秒钟内停止运行并再次开始无限运行? 我的html: 我的CSS类: 解决方案可以是JS或CSS3。 问题答案: 对于纯CSS3动画,在动画的每个单次迭代之间添加延迟的一种方法是修改关键帧设置,以使其产生所需的延迟。 在以下代码段中,正在执行以下操作: 动画的整个持续时间为

  • 问题内容: 我正在开发节拍器应用程序。用户可以在运行时选择bpm,我的应用程序将相应地播放“滴答”声。“滴答”是一个节拍器“拍”(mp3)。我尝试使用Handler和MediaPlayer来实现它,但是节拍器一点也不精确。因此,我考虑了更改整个方法:当用户选择新的bpm值时,我通过每N毫秒重复X次滴答声,然后循环遍历此运行时创建的声音来合成新声音。这是有效的替代方法吗?如何在Android中实现?

  • 问题内容: 使用它可以在指定的时间启动功能: 但是,如果我想多次启动该功能怎么办?每次经过一个时间间隔,我都想执行该功能(假设每60秒执行一次)。 问题答案: 如果您不在乎内的代码是否可能花费比您的间隔更长的时间,请使用: 一遍又一遍地触发作为第一个参数传入的函数。 更好的方法是与函数一起使用: 这样可以保证在执行代码之前不会进行下一个调用。在本示例中,我将其用作函数参考。这是给函数命名并在其中调

  • 我有一个函数,使API调用服务器和更新用户界面与新数据。我想使,使每30秒我使API调用不同的url每次?这些API调用应该是不间断的,只要应用程序正在运行。

  • 问题内容: 我想知道如何每x秒重绘和更新JPanel的背景…这是我的代码: 我的代码有2个问题:1-JPanel根本没有被绘制。2-第一张可以打印,然后每次打印数量增加一倍。有什么建议吗?先感谢您 更新:我以这种方式解决了这个问题: 更新2: 问题答案: 使用Swing计时器,

  • 我想把一个整数变成一个金字塔。一、 E数字3: 因此,根据我找到的答案,我做了如下: 但它不起作用,而且是次优的。有没有一种简单的方法可以在同一行中重复整数n次? 也不是很高兴,但似乎我不能只使用System.out.println(int x, int n次)