带计时器条目的Python字典

0 投票
2 回答
1027 浏览
提问于 2025-04-16 17:52

我想创建一个字典,其中有一个条目是一个计时器。当这个计时器到时间了,就应该调用一个函数来处理这个条目。比如:

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

有没有什么方法可以做到这一点呢?
非常感谢你的帮助。
祝好,
Karim

2 个回答

1

@karim:你可以看看一些基于事件驱动的库,比如Gevent或者Twisted。以Gevent为例,它有一个类似于gevent.spawn_later(seconds, function, *args, **kwargs)的功能,我觉得这很符合你的需求。你甚至可以让函数按顺序执行。

举个例子:

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

这样的话,f2会在3秒后执行,然后f1会在那之后的2秒执行。

2

你可以把所有的值都变成定时器对象,这样它们会在设定的时间后触发。不过,这样的话,你的程序就得依赖于线程模块了。

另外,你也可以创建一个“定时线程”,这个线程会不时地检查字典里的所有元素,并减少它们的计数。如果发现某个元素的计数降到零,就可以调用一个回调函数。

如果你的字典是根据“访问次数”来决定的,而不是实际的时间,那么你可以考虑记录访问的调用,并用这些来增加或减少计数,而不是使用线程(也就是说,可以重新定义或包装一下__setitem____getitem__)。

撰写回答