如何在python36中获取当前正在运行的EventLoop?

时间:2019-06-24 16:17:21

标签: python-3.6 python-asyncio

我们都知道,在python37中,我们获得了易于使用的新api asyncio.get_running_loop(),让我们在调用协程时无需显式传递eventloop。

我想知道是否可以使用任何方法在python36中获得相同的效果?

NativeSecp256k1.secKeyVerify(byteArrayOf(...))

1 个答案:

答案 0 :(得分:2)

在Python 3.6中,您可以使用asyncio.get_event_loop()获得同等效果。

根据documentation,它等效于调用get_event_loop_policy().get_event_loop(),当从协程调用时,它依次返回documented返回“当前运行的事件循环”。

换句话说,当从协程调用(或从协程调用的函数)调用时,get_event_loopget_running_loop之间没有区别,两者都将返回运行循环。只有在没有循环运行时,get_event_loop()才会继续返回与当前线程关联的循环,而get_running_loop()会引发异常。只要在循环实际运行时小心调用get_event_loop(),它就等效于get_running_loop()

请注意,get_event_loop从协程调用时返回运行循环。在那些版本之前,get_event_loop将始终返回与当前线程关联的事件循环,该循环可能与实际运行的循环不同。这使得get_event_loop()从根本上是不可靠的,这也是旧的异步可能将loop参数传递到任何地方的原因。更多详细信息new to Python 3.6 and 3.5.3