例如,asyncio.gather具有签名asyncio.gather(*coros_or_futures, loop=None, return_exceptions=False)

我可以通过特定的循环或保留None(将使用默认事件循环)。

BaseEventLoop.run_in_executor为什么没有定义相同的方式,例如:asyncio.run_in_executor(executor, callback, *args, loop=None)

是否有重要原因将其放入BaseEventLoop

最佳答案

历史上run_in_executor出现得很早,这是事件循环的方法。它是根据扭曲的在线程池中运行代码的方法建模的。出现后,run_in_executor从未改变。
它是低级函数,可以接受回调,并且与接受回调而不是协程的其他函数非常接近:call_soon()call_later()add_reader()等。所有这些都是事件循环的方法。

在图书馆开发大约一年后,asyncio.gather被邀请了很多。它位于较高的抽象级别,可与协程一起使用,并与其他与协程相关的功能(如wait()sleep())一起使用。

关于python - 为什么将run_in_executor放在BaseEventLoop中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31192996/

10-15 01:56