例如,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/