Python dict с таймером - PullRequest
       5

Python dict с таймером

0 голосов
/ 18 мая 2011

Я хочу создать диктовку, имеющую в качестве входа таймер. Когда таймер входа истекает, должна быть вызвана функция для обработки этой записи. e.g.:

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

Есть ли способ сделать это.
Большое спасибо за вашу помощь. С уважением, Карим

Ответы [ 2 ]

2 голосов
/ 18 мая 2011

Вы можете сделать все свои значения объектами таймера , которые будут срабатывать через заданный промежуток времени.Это заставит вашу программу полагаться на модуль потоков.

В качестве альтернативы, у вас может быть один «поток таймера», который время от времени просматривает все элементы в словаре и уменьшает количество.Если он находит, что элемент уменьшен до нуля, он должен вызвать обратный вызов.

Если ваш словарь зависит от «количества обращений», а не от фактического времени , вам, возможно, следует подумать о захвате вызовов доступа и об их использовании для увеличения и уменьшения счетчиков, а неиспользуя потоки (т. е. путем переопределения или переноса __setitem__ и __getitem__).

1 голос
/ 18 мая 2011

@ 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 секунды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...