一个可以多次启动的纯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产生任何进一步的调用。注意,如果函数是 当前正在运行中,它将完成当前迭代,不会被中断。

ontimeoutparams在0.2中被弃用,取而代之的是functionargs 以及kwargs,以匹配threading.Timerapi。

由于底层机制纯粹基于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替换为argskwargs,以匹配threading.Timerapi。 ontimeoutparams已弃用,并将在v0.3中删除。
  • 添加了许多代码注释,以更好地解释模块的工作原理。

乔希·伯内特-josh_github@burnettsonline.org

根据麻省理工学院的许可证发行。有关详细信息,请参见LICENSE.txt

https://github.com/joshburnett/multitimer

希望你觉得这个有用!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在Java和Javascript之间共享常量   c#无法使用Gson反序列化字节[]   如果字符串是实十进制数字,则在Java中仅显示十进制数字   与Android Studio的java FireBase同步失败   web应用程序的Java Oracle数据库更改通知问题   数组中缺少整数的java嵌套循环   zos在z/os上以TOD格式(一天中的时间)转换Java时间戳   java JAXB未根据注释生成XML(JDK 1.7)   java使用Twitter4j和Geolocation查找在该地区发布推文的用户,但如何获取用户ID?   在Libgdx中实现简单运动模糊的java意外结果   java在Android数据库中插入另一个EditText值?   java标准偏差数组(我的算法错误)   java如何修复M1 Mac的Ant javascript标记?   java遍历树标记值的长度   java理解Springboot中的Cron,自动发送电子邮件   java如何将“Data.Json”文件从资产保存到内部存储器,然后将其用于读/写   java代码在编写FirstDuplicate方法时会遇到时间限制问题   java将HTML转换为PDF并将其添加到段落中   javascript css()未设置正文标记的背景属性