带计时器项的Python dict

2021-02-28 18:19:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

有什么方法可以做到。
非常感谢你的帮助。 当做, 卡里姆

2条回答
网友
1楼 ·

@karim:你应该看看事件驱动的库,比如Gevent,或者{a2}。例如,Gevent有一些类似gevent.spawn_later(seconds, function, *args, **kwargs)的东西,我认为它非常适合您的需要。甚至可以无序地生成函数。在

例如:

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

并且f2将在3秒后执行,然后f12秒后执行。在

网友
2楼 ·

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

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

如果您的字典依赖于“访问次数”,而不是实际的时间,那么您可能应该考虑捕获访问调用,并使用这些来增加和减少计数,而不是使用线程(即通过重新定义或包装__setitem____getitem__)。在

相关问题