gpt4 book ai didi

python - gevent.wait 和 gevent.joinall 有什么区别?

转载 作者:太空狗 更新时间:2023-10-30 02:19:01 25 4
gpt4 key购买 nike

假设 tasksGreenlet 对象的列表。现在有什么区别

gevent.wait(tasks)

gevent.joinall(tasks)

?

最佳答案

不多! joinall 实际上在内部调用了 wait,并且是一个非常短的函数 (source code):

def joinall(greenlets, timeout=None, raise_error=False, count=None):
if not raise_error:
return wait(greenlets, timeout=timeout, count=count)

done = []
for obj in iwait(greenlets, timeout=timeout, count=count):
if getattr(obj, 'exception', None) is not None:
if hasattr(obj, '_raise_exception'):
obj._raise_exception()
else:
raise obj.exception
done.append(obj)
return done

如您所见,除非您传递 raise_error=True,否则 joinall 本质上是 wait 的传递。

如果你确实通过了 raise_error=True,那么 joinall 会通过你的 greenlets,如果其中之一引发异常,则引发异常(注意它使用 iwait 而不是 wait,所以一旦一个 greenlet 引发异常就会引发。

关于python - gevent.wait 和 gevent.joinall 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32999598/

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