Python dict with timer entry

时间:2011-05-18 10:48:42

标签: python dictionary timer

我想创建一个dict作为一个入口计时器。当进入计时器超时时,应调用一个函数对该条目进行一些处理。 e.g:

dict = [key, timer]
if timer == 0
    f(key, timer)

有没有办法做到这一点 非常感谢你的帮助。 问候, 卡里姆

2 个答案:

答案 0 :(得分:2)

您可以制作所有值timer objects,这些值会在给定的时间后触发。这将使您的程序依赖于线程模块。

或者,您可以使用单个“计时器线程”,偶尔遍历字典中的所有元素并减少计数。如果它发现元素已减少为零,则应调用回调。

如果您的词典依赖于“访问次数”而不是实际的时间,您应该考虑捕获访问调用并使用它们来增加和减少计数而不是使用线程(即通过重新加工或包裹__setitem____getitem__)。

答案 1 :(得分:1)

@karim:你一定要看看事件驱动的库,例如GeventTwisted。例如,Gevent有类似gevent.spawn_later(seconds, function, *args, **kwargs)的东西,我认为它非常适合你的需要。你甚至可以不按顺序生成函数。

例如:

gevent.spawn_later(5, f1)
gevent.spawn_later(3, f2)

f2将在3秒后执行,然后在{2}后执行f1