python用线程封装的一个简单的定时器类

2022-03-11 00:00:00 封装 定时器 用线

python用线程封装的一个简单的定时器类,直接调用类可以实现间隔多长时间执行指定代码

"""
皮蛋编程(https://www.pidancode.com)
创建日期:2022/3/28
功能描述:python用线程封装的一个简单的定时器类
"""
from threading import Timer


class MyTimer:
    def __init__(self):
        self._timer = None
        self._tm = None
        self._fn = None

    def _do_func(self):
        if self._fn:
            self._fn()
            self._do_start()

    def _do_start(self):
        self._timer = Timer(self._tm, self._do_func)
        self._timer.start()

    def start(self, tm, fn):
        self._fn = fn
        self._tm = tm
        self._do_start()

    def stop(self):
        try:
            self._timer.cancel()
        except:
            pass


def hello():
    from datetime import datetime
    print("hello pidancode.com", datetime.now())


if __name__ == '__main__':
    mt = MyTimer()
    mt.start(2, hello)
    for i in range(10):
        import time

        time.sleep(1)
    mt.stop()

输出结果如下:
hello pidancode.com 2022-03-28 08:27:40.909818
hello pidancode.com 2022-03-28 08:27:42.912251
hello pidancode.com 2022-03-28 08:27:44.916440

相关文章