如何解决间隔时间<100 ms的定期功能执行
我的目标是在定期的时间间隔但周期长的时间内执行功能。
下面链接的代码看起来很有希望:
https://medium.com/greedygame-engineering/an-elegant-way-to-run-periodic-tasks-in-python-61b7c477b679。
经过一些小的修改,我最终得到了这个:
import threading
import time
from datetime import timedelta
from unittest.mock import Mock
WAIT_TIME_SECONDS = 0.1
class PeriodicTask(threading.Thread):
""" Class for executing a periodic task specifying a time interval between invokations """
def __init__(self,interval: timedelta,execute: Callable[...,None],*args,**kwargs):
super().__init__()
assert isinstance(interval,timedelta),"Must specifiy datetime time interval,here"
assert not execute is None,"Must specify function which should be invoked regularly,here"
self.daemon = False
self.stopped = threading.Event()
self.interval = interval
self.execute = execute
self.args = args
self.kwargs = kwargs
def stop(self):
""" Stop periodic task """
self.stopped.set()
self.join()
def run(self):
""" Run task based on the specified interval """
while not self.stopped.wait(self.interval.total_seconds()):
self.execute(*self.args,**self.kwargs)
if __name__ == "__main__":
foo = Mock()
job = PeriodicTask(interval=timedelta(seconds=WAIT_TIME_SECONDS),execute=foo)
job.start()
time.sleep(1)
job.stop()
在任务互相阻碍之前,我似乎可以执行大约100毫秒(Intel Core i7-3770K cpu,3.5 GHz,16 GB RAM)的定期任务。有没有一种方法可以优化此代码片段,以便我可以定期执行至少10ms的任务?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。