Python 从列表中创建重复的Gevent线程时出现问题
我正在努力使用正确的语法从列表中创建Gevent线程。我希望这些线程以特定的节奏无限重复,除非停止。只有第一个列表项运行。从文档中,我认为gevent.sleep导致进程屈服于另一个线程。我希望规则1每秒钟重复一次,规则2每两秒钟重复一次。我错过了什么?先谢谢你Python 从列表中创建重复的Gevent线程时出现问题,python,recursion,gevent,Python,Recursion,Gevent,我正在努力使用正确的语法从列表中创建Gevent线程。我希望这些线程以特定的节奏无限重复,除非停止。只有第一个列表项运行。从文档中,我认为gevent.sleep导致进程屈服于另一个线程。我希望规则1每秒钟重复一次,规则2每两秒钟重复一次。我错过了什么?先谢谢你 import gevent import datetime def repeat(name: str, timer: float): while True: print(name + ': ' + str(da
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.sleep函数,我已经有了…正在研究我的解决方案与我上面链接的解决方案之间的差异。对于同一条船上的任何人来说,这都与课程有关!我将repeat函数移到类中,实例化了两个副本,并将它们添加到列表中,结果成功了
import gevent
import datetime
class Rule:
def __init__(self, name: str, timer: float):
self.name = name
self.timer = timer
def repeat(self):
name = self.name
timer = self.timer
while True:
print(name + ': ' + str(datetime.datetime.now()))
gevent.sleep(timer)
rule1 = Rule('rule1', 2.0)
rule2 = Rule('rule2', 1.0)
testlist = [rule1, rule2]
threads = []
for rule in testlist:
threads.append(gevent.spawn(rule.repeat))
gevent.joinall(threads)