2021-02-28 18:19:41 发布
网友
我想创建一个dict,它有一个定时器作为条目。当条目计时器超时时,应该调用一个函数对该条目进行一些处理。e、 g.:
dict = [key, timer] if timer == 0 f(key, timer)
有什么方法可以做到。 非常感谢你的帮助。 当做, 卡里姆
@karim:你应该看看事件驱动的库,比如Gevent,或者{a2}。例如,Gevent有一些类似gevent.spawn_later(seconds, function, *args, **kwargs)的东西,我认为它非常适合您的需要。甚至可以无序地生成函数。在
gevent.spawn_later(seconds, function, *args, **kwargs)
例如:
gevent.spawn_later(5, f1) gevent.spawn_later(3, f2)
并且f2将在3秒后执行,然后f12秒后执行。在
f2
f1
您可以使所有的值timer objects,这些值将在给定的时间后激发。但这将使您的程序依赖于线程模块。在
或者,您可以有一个“计时器线程”,它偶尔会遍历字典中的所有元素并减少计数。如果它发现某个元素已减为零,则应调用回调。在
如果您的字典依赖于“访问次数”,而不是实际的时间,那么您可能应该考虑捕获访问调用,并使用这些来增加和减少计数,而不是使用线程(即通过重新定义或包装__setitem__和__getitem__)。在
__setitem__
__getitem__
@karim:你应该看看事件驱动的库,比如Gevent,或者{a2}。例如,Gevent有一些类似
gevent.spawn_later(seconds, function, *args, **kwargs)
的东西,我认为它非常适合您的需要。甚至可以无序地生成函数。在例如:
并且
f2
将在3秒后执行,然后f1
2秒后执行。在您可以使所有的值timer objects,这些值将在给定的时间后激发。但这将使您的程序依赖于线程模块。在
或者,您可以有一个“计时器线程”,它偶尔会遍历字典中的所有元素并减少计数。如果它发现某个元素已减为零,则应调用回调。在
如果您的字典依赖于“访问次数”,而不是实际的时间,那么您可能应该考虑捕获访问调用,并使用这些来增加和减少计数,而不是使用线程(即通过重新定义或包装
__setitem__
和__getitem__
)。在相关问题
PyPI热门下载资源包