Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from threading import Thread, Event
- import time
- class Timer(Thread):
- """Call a function after a specified number of seconds:
- t = Timer(30.0, f, args=None, kwargs=None)
- t.start()
- t.cancel() # stop the timer's action if it's still waiting
- """
- def __init__(self, internal, function, args=None, kwargs=None):
- Thread.__init__(self)
- self._internal = internal
- self._function = function
- self._args = args if args is not None else []
- self._kwargs = kwargs if kwargs is not None else {}
- self._finished = Event()
- self._reset = False
- def cancel(self):
- """Stop the timer."""
- self._finished.set()
- def reset(self):
- """Reset the timer"""
- self._reset = True
- self._finished.set()
- def run(self):
- while True:
- self._finished.wait(self._internal)
- if not self._finished.is_set():
- self._function(*self._args, **self._kwargs)
- if self._reset:
- """Reset the timer"""
- self._reset = False
- self._finished.clear()
- continue
- return
- """Example"""
- def ping():
- print("ping, at " + str(time.time()))
- def main():
- timer = Timer(3.0, ping)
- print(time.time())
- timer.start()
- time.sleep(1.3)
- print(time.time())
- timer.reset()
- if __name__ == '__main__':
- main()
Add Comment
Please, Sign In to add comment