Python通过线程实现定时器Timer的方法可以采用Python标准库中的threading
模块,通过继承threading.Thread
类并重写run()
方法,实现定时器功能。
具体步骤如下:
步骤一:引入threading
模块。
import threading
步骤二:定义一个继承threading.Thread
类的新类。
class TimerThread(threading.Thread):
def __init__(self, interval, function, *args, **kwargs):
threading.Thread.__init__(self)
self.interval = interval
self.function = function
self.args = args
self.kwargs = kwargs
self.finished = threading.Event()
def cancel(self):
self.finished.set()
def run(self):
while not self.finished.is_set():
self.function(*self.args, **self.kwargs)
self.finished.wait(self.interval)
步骤三:新建定时器对象并调用start()
方法启动线程。
def print_hello():
print("Hello, World!")
timer = TimerThread(5, print_hello)
timer.start()
这段代码会新建一个TimerThread
对象timer
,并设置定时器时间为5秒,线程执行的函数是print_hello
,然后调用timer
的start()
方法启动线程。
此时,在5秒后将会自动输出一行文本“Hello, World!”。
另外,下面是另一条示例说明,采用另一种方式实现定时器的功能:
import threading
class TimerThread(threading.Thread):
def __init__(self, interval, function):
threading.Thread.__init__(self)
self.interval = interval
self.function = function
self.finished = threading.Event()
def cancel(self):
self.finished.set()
def run(self):
while not self.finished.is_set():
timer = threading.Timer(self.interval, self.function)
timer.start()
timer.join()
def print_hello():
print("Hello, World!")
timer = TimerThread(5, print_hello)
timer.start()
这段代码中,定时器的实现方式和上面的示例不同,采用了Python标准库中的threading.Timer
类实现定时器。
在这个示例中,新建了一个继承自threading.Thread
类的TimerThread
对象timer
,定时器时间同样是5秒,而线程执行的函数是print_hello
。
在run()
方法中,每次运行时都会新建一个定时器对象timer
,并使用start()
方法启动线程。而在start()
方法返回之前,timer.join()
会一直阻塞,直到定时器时间到达。
因此,这段代码的效果也是,在5秒后将会自动输出一行文本“Hello, World!”。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python通过线程实现定时器timer的方法 - Python技术站