类型:Python,创建时间:Dec. 31, 2011, 9:50 a.m.
标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/24/。
前几天写一个后台程序,定时查看一个URL的修改,本来想用crontab做的,后来想想就算了,因为python写起来更简单。于是我就实现了一个每小时(可配置)醒过来做一次操作的小小工具类。与threading的Timer不一样的是,它是单线程的。
class Timer: def __init__(self, waken_interval=1): self.waken_interval = waken_interval self.callbacks = [] def setInterval(self,interval,func): self.callbacks.append({"interval" : interval, "func" : func, "counter" : 0}) def sleep(self): time.sleep(self.waken_interval) for cb in self.callbacks: cb["counter"] += self.waken_interval def run(self, instantly=False): while True: if not instantly: self.sleep() for cb in self.callbacks: if cb["counter"] >= cb["interval"]: try: cb["func"]() except: pass cb["counter"] = 0 if instantly: self.sleep()
使用方法:
import sys t=Timer() t.setInterval(2, lambda : sys.stdout.write("5\n")) t.setInterval(3, lambda : sys.stdout.write("7\n")) t.run()
标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/24/。
暂时还没有任何评论。