Я борюсь с правильным синтаксисом для создания потоков Gevent из списка. Я хочу, чтобы эти темы повторялись бесконечно в определенной каденции, если они не остановлены. Запускается только первый элемент списка. Из документации я подумал, что gevent.sleep заставил процесс уступить другому потоку. Я ожидаю, что rule1 будет повторяться каждую секунду, а rule2 будет повторяться каждые две секунды. Что я пропустил? Заранее спасибо.
import gevent
import datetime
def repeat(name: str, timer: float):
while True:
print(name + ': ' + str(datetime.datetime.now()))
gevent.sleep(timer)
threads = []
rules = [
{'name': 'rule1', 'timer': 1.0},
{'name': 'rule2', 'timer': 2.0}
]
for rule in rules:
threads.append(gevent.spawn(repeat(rule['name'], rule['timer'])))
gevent.joinall(threads)
Работает, как и ожидалось, когда я создаю отдельные процессы для правила 1/2 и добавляю их в потоки. Похоже, что проблема находится в разделе «для правила в правилах», но я не уверен, как заставить его пройти мимо первого правила.
У меня та же проблема, что и у автора Задача Gevent с бесконечным циклом, кажется, также блокирует все остальные задачи , но их решение заключалось в том, чтобы включить функцию gevent.sleep в их цикл, который у меня уже есть ...