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