为什么run_in_executor放在BaseEventLoop中?

时间:2015-07-02 19:25:39

标签: python python-3.x python-asyncio

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

如果将某个重要原因放入select lista.* from ( SELECT Master_tbl.ID MasterID, 0 DetailID, Master_tbl.Plant FROM Master_tbl UNION SELECT Master_tbl.ID MasterID, Detail_tbl.Group_ID DetailID, Detail_tbl.Plant FROM Master_tbl JOIN Detail_tbl on Master_tbl.Detail_Group_ID=Detail_tbl.Group_ID ) lista order by MasterID, DetailID

1 个答案:

答案 0 :(得分:3)

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

经过大约一年的图书馆开发,很久以后才邀请{p> asyncio.gather。它位于更高的抽象级别,与协同程序一起使用,并与其他与协同相关的函数(如wait()sleep())一起推送。