Позвольте сказать, что у меня есть событие(), и есть число X зелий, ожидающих события. Когда все эти зеленые зелени сделаны, я хочу сделать публикацию()gevent control greenlets с событиями
Как узнать, когда публиковать?
схематичное:
event.set() -> X number event.wait() -> finally publish the current state.
Как я могу убедиться, что все greenlets, которые ждут() сделаны прежде, чем я делаю публиковать?
Я думаю, что положить все ожидающие зеленых в группу и сделать group.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) работает, если нет сна в test_wait. Как я могу быть уверен, что все зеленые зелени закончились?