Python 什么';gevent.wait和gevent.joinall之间的区别是什么?
假设Python 什么';gevent.wait和gevent.joinall之间的区别是什么?,python,gevent,Python,Gevent,假设tasks是Greenlet对象的列表。那么这两者之间有什么区别呢 gevent.wait(tasks) 及 不多joinall实际上在内部调用了wait,这是一个非常短的函数(): 如您所见,除非传递raise\u error=True,joinall本质上是传递到wait 如果您确实通过了raise\u error=True,那么joinall将遍历您的greenlet,并在其中一个greenlet引发异常时引发异常(请注意,它使用iwait而不是wait,因此一旦有一个greenle
tasks
是Greenlet
对象的列表。那么这两者之间有什么区别呢
gevent.wait(tasks)
及
不多
joinall
实际上在内部调用了wait
,这是一个非常短的函数():
如您所见,除非传递raise\u error=True
,joinall
本质上是传递到wait
如果您确实通过了raise\u error=True
,那么joinall
将遍历您的greenlet,并在其中一个greenlet引发异常时引发异常(请注意,它使用iwait
而不是wait
,因此一旦有一个greenlet引发,就会引发异常)
gevent.joinall(tasks)
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