假设我有一个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/

10-11 01:11