首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从不同的线程/类启用计时器

要从不同的线程/类启用计时器,您可以使用多线程和计时器库。以下是一个使用Python的threading库和time库的示例:

代码语言:python
代码运行次数:0
复制
import threading
import time

class TimerThread(threading.Thread):
    def __init__(self, interval, function, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.interval = interval
        self.function = function
        self.finished = threading.Event()

    def run(self):
        while not self.finished.is_set():
            self.function()
            time.sleep(self.interval)

    def stop(self):
        self.finished.set()

def my_function():
    print("Hello, I'm a function!")

# 创建一个计时器线程,每隔5秒运行一次my_function
timer_thread = TimerThread(5, my_function)

# 开始计时器线程
timer_thread.start()

# 运行一段时间后停止计时器线程
time.sleep(15)
timer_thread.stop()

在这个示例中,我们定义了一个名为TimerThread的类,它继承自threading.ThreadTimerThread的构造函数接受一个时间间隔、一个要执行的函数以及任何其他要传递给threading.Thread的参数。TimerThreadrun方法在每个时间间隔上运行给定的函数。

我们还定义了一个名为my_function的简单函数,它只是打印一条消息。然后,我们创建一个TimerThread实例,将时间间隔设置为5秒,并将my_function作为要执行的函数。最后,我们启动计时器线程,让它运行15秒,然后停止它。

这个示例展示了如何从不同的线程/类启用计时器。您可以根据自己的需求修改这个示例,以适应您的特定用例。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • android定时器开发[通俗易懂]

    在android中,经常用到的定时器主要有以下几种实现: 一、采用Handler与线程的sleep(long )方法 二、采用Handler的postDelayed(Runnable, long) 方法 三、采用Handler与timer及TimerTask结合的方法。 下面逐一介绍: 一、采用Handle与线程的sleep(long )方法 Handler主要用来处理接受到的消息。这只是最主要的方法,当然Handler里还有其他的方法供实现,有兴趣的可以去查API,这里不过多解释。 1.定义一个Handler类,用于处理接受到的Message. Handler handler = new Handler() { public void handleMessage(Message msg) { //要做的事情 super.handleMessage(msg); } }; 2.新建一个实现Runnable接口的线程类。如下: public class MyThread implements Runnable{ @Override public void run() { // TODO Auto-generated method stub while (true) { try { Thread.sleep(10000);//线程暂停10秒,单位毫秒 Message message=new Message(); message.what=1; handler.sendMessage(message);//发送消息 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } 3.在需要启动线程的地方加入下面语句: new Thread(new MyThread()).start(); 4.启动线程后,线程每10s发送一次消息。 二、采用Handler的postDelayed(Runnable, long) 方法 这个实现比较简单一些: 1. Handler handler=new Handler(); Runnable runnable=new Runnable(){ @Override public void run() { // TODO Auto-generated method stub //要做的事情 handler.postDelayed(this, 2000); } }; 2.启动计时器: handler.postDelayed(runnable, 2000);//每两秒执行一次runnable. 3.停止计时器: handler.removeCallbacks(runnable); 三、采用Handler与timer及TimerTask结合的方法。 1.定义定时器、定时器任务及Handler句柄 private final Timer timer = new Timer(); private TimerTask task; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub //要做的事情 super.handleMessage(msg); }

    01
    领券