一个可以多次启动的纯Python周期定时器
multitimer的Python项目详细描述
多定时器
纯python自动重复计时器,可以多次停止和重新启动。
multitimer.MultiTimer
类似于
^{MultiTimer
并
多次停止(与threading.Timer
不同)。
概述
multitimer.MultiTimer(interval, function, args=None, kwargs=None, count=-1, runonstart=True)
创建将使用参数args和关键字运行function的计时器 参数kwargs,经过interval秒后,总共count次。
如果runnstart==true,则调用.start()
时将立即调用function。
如果args为none(默认值),则将使用空列表。如果kwargs不是 默认)则将使用空的dict。
如果count=-1(默认值),计时器将无限期重复,或者直到.stop()
被称为。
通过调用.start()
启动此计时器。一旦启动,调用.stop()
将终止
计时器循环,不会对function产生任何进一步的调用。注意,如果函数是
当前正在运行中,它将完成当前迭代,不会被中断。
ontimeout和params在0.2中被弃用,取而代之的是function,args
以及kwargs,以匹配threading.Timer
api。
由于底层机制纯粹基于python线程和事件,因此整个处理器 负载和内存使用率最低。注意,定时精度通常在10 ms内, 取决于平台。
安装和使用
$ pip install multitimer
importmultitimerimporttimedefjob():print("I'm working...")# This timer will run job() five times, one second aparttimer=multitimer.MultiTimer(interval=1,function=job,count=5)# Pauses for one interval before starting job() five timestimer=multitimer.MultiTimer(interval=1,function=job,count=5,runonstart=False)# You can specify input parameters for the _function_ functiondefjob2(foo):print(foo)timer=multitimer.MultiTimer(interval=1,function=job2,kwargs={'foo':"I'm still working..."})# Also, this timer would run indefinitely...timer.start()# ...unless it gets stoppedtime.sleep(5)timer.stop()# If a mutable object is used to specify input parameters, it can be changed after starting the timeroutput={'foo':"Doin' my job again."}timer=multitimer.MultiTimer(interval=1,function=job2,kwargs=output,count=5)timer.start()time.sleep(3.5)output['foo']="I'd like to be done now."# And a MultiTimer can be re-started by just calling start() againtime.sleep(2)output['foo']='Please just let me be...'timer.start()time.sleep(4.5)timer.stop()
释放量
0.12018-02-15
- 初始版本
0.22019-01-17
- 将time.clock()调用替换为time.perf_counter(),即time.clock is deprecated since python 3.3,并且不提供跨不同平台的一致行为。
- 将ontimeout替换为function,将params替换为args和kwargs,以匹配
threading.Timer
api。 ontimeout和params已弃用,并将在v0.3中删除。 - 添加了许多代码注释,以更好地解释模块的工作原理。
元
乔希·伯内特-josh_github@burnettsonline.org
根据麻省理工学院的许可证发行。有关详细信息,请参见LICENSE.txt
。
https://github.com/joshburnett/multitimer
希望你觉得这个有用!