例如,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
?
答案 0 :(得分:3)
历史上run_in_executor
很早出现,它是一个事件循环的方法。它是在twisted的线程池中运行代码的方法之后建模的。出现后run_in_executor
从未改变过。
它是低级函数,接受回调并且非常接近接受回调的其他函数,而不是couroutine:call_soon()
,call_later()
,add_reader()
等。所有这些都是事件循环的方法。
asyncio.gather
。它位于更高的抽象级别,与协同程序一起使用,并与其他与协同相关的函数(如wait()
或sleep()
)一起推送。