Управление временем с помощью очереди и потоков

#python #multithreading

#python #многопоточность

Вопрос:

У меня есть объект, который может использоваться потоком в течение некоторого времени, а затем я должен прекратить его использование на определенный период (например, изгнание на X секунд). затем поток может использовать его снова.

Я хочу получить предложения о том, как мне это реализовать, я думал о очереди FIFO, которая содержит пару ключ-значение для каждого объекта. объект в качестве ключа и период, в течение которого он может снова начать работать, в качестве значения. Когда объект должен прекратить работу, он будет добавлен в очередь с указанием времени, в которое он был добавлен. Затем я должен проверять каждые X секунд, можно ли использовать первый элемент в очереди, вот почему я думаю, что это не очень хорошее решение этой проблемы.

Каков наилучший способ реализовать это? Я использую python, поэтому примеры на python будут оценены. Спасибо.

Ответ №1:

Рассмотрим модуль sched. Это позволяет отправлять задания для запуска в будущем.

Пример из документов:

 >>> import sched, time
>>> s = sched.scheduler(time.time, time.sleep)
>>> def print_time(): print "From print_time", time.time()
...
>>> def print_some_times():
...     print time.time()
...     s.enter(5, 1, print_time, ())
...     s.enter(10, 1, print_time, ())
...     s.run()
...     print time.time()
...
>>> print_some_times()
930343690.257
From print_time 930343695.274
From print_time 930343700.273
930343700.276