gpt4 book ai didi

python - gevent 用事件控制 greenlets

转载 作者:行者123 更新时间:2023-11-28 16:48:38 30 4
gpt4 key购买 nike

假设我有一个 Event() 进来,并且有 X 个 greenlets 在等待这个事件。当那些等待的 greenlets 完成后,我想做一个 Publish()

我怎么知道什么时候发布?

原理图:

event.set() -> X number event.wait() -> finally publish the current state.

我如何确保在我发布之前所有 wait() 的 greenlet 都已完成?

我想把所有等待的绿叶放在一个组里并做一个 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()

如果 test_wait 中没有 sleep ,Gevent.sleep(0) 就会工作。我如何确定所有等待的小绿叶都已结束?

最佳答案

您可以将所有 greenlet 放入一个列表中并调用 gevent.joinall(your_greenlets)documentation有点多余,但是有一个 example .

关于python - gevent 用事件控制 greenlets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10812327/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com