timer3 - Scheduler for Python functions.
The timer3 module lets you schedule Python functions at specific times, or at an interval. It can be used as a replacement to threading.Timer, the difference is that timer3 is always only using a single thread (unless you manually start more of them)
You should never use this to apply expensive operations, as this would not be effective when running in a single thread, rather you should make the timer move the operations to a execution pool (like a thread/multiprocessing pool, or maybe sending a message):
>>> pool = multiprocessing.Pool() >>> timer3.apply_after(10000, pool.apply_async, (expensive_fun, ))
You can install timer3 either via the Python Package Index (PyPI) or from source.
To install using pip,:
$ pip install timer3
Apply function after n msecs:
>>> import timer3 >>> timer3.apply_after(msecs, fun, args, kwargs, priority=0)
Apply function every n msecs:
>>> timer3.apply_interval(msecs, fun, args, kwargs, priority=0)
Apply function at a specific date (a datetime object):
>>> timer3.apply_at(datetime, fun, args, kwargs, priority=0)
The apply_* functions returns a timer3.Entry instance, you can use this to cancel the execution:
>>> tref = timer3.apply_after(msecs, fun, args, kwargs) >>> tref.cancel()
Running custom Timer threads
When using the module interface a default timer thread is started as soon as you schedule something. If you want to keep track of the thread manually, you can use the timer3.Timer class:
>>> timer = timer3.Timer() >>> timer.apply_after(msecs, fun, args, kwargs) >>> timer.stop() # stops the thread and joins it.
This software is licensed under the New BSD License. See the LICENSE file in the top distribution directory for the full license text.