假设我有一个Event()进来,有X个greenlet在等待事件。当那些等待的greenlet完成时,我想做一个Publish()
我怎么知道什么时候出版?
示意图:
event.set() -> X number event.wait() -> finally publish the current state.
如何确保所有等待()的greenlet都在我发布之前完成?
我想把所有等待的小菜都放在一个小组里
然后做一个组。join()可以工作。
import gevent
from gevent.pool import Group
from gevent.event import Event
import random
incoming = Event()
group = Group()
def test_wait(x):
gevent.sleep(random.random() * 3)
print 'test %s' % (x)
def publish():
print 'published'
for x in range(int(random.random() * 20)):
group.spawn(test_wait, x)
def event_setter():
incoming.set()
gevent.sleep(0)
publish()
event_setter()
如果测试等待中没有睡眠,则Gevent.sleep(0)有效。
我怎么能确定所有等待的绿叶菜都结束了?
最佳答案
您可以将所有的greenlet放入一个列表并调用gevent.joinall(your_greenlets)
。documentation有点多余,但有一个example。
关于python - 带事件的gevent控件greenlets,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10812327/