Python 3.x Python asyncio:在不创建任务的情况下启动循环

Python 3.x Python asyncio:在不创建任务的情况下启动循环,python-3.x,multithreading,python-asyncio,python-3.7,Python 3.x,Multithreading,Python Asyncio,Python 3.7,有人能解释一下,如果我在没有添加任何任务的情况下启动循环,为什么我不能执行任务?(Python 3.7) 未注释的执行是: init started init finished init started init finished a1 executed a2 executed 为什么会这样?我想创建一个循环并在将来添加任务。除非另有明确说明,否则asyncio API。这意味着从运行事件循环的线程以外的线程调用loop.create_task(),将无法与循环正确同步 要从外部线程将任务提

有人能解释一下,如果我在没有添加任何任务的情况下启动循环,为什么我不能执行任务?(Python 3.7)

未注释的执行是:

init started
init finished
init started
init finished
a1 executed
a2 executed

为什么会这样?我想创建一个循环并在将来添加任务。

除非另有明确说明,否则asyncio API。这意味着从运行事件循环的线程以外的线程调用
loop.create_task()
,将无法与循环正确同步

要从外部线程将任务提交到事件循环,您需要调用:


这将唤醒循环,提醒它新任务已到达,并返回一个可用于获取协同路由结果的消息。

非常感谢!我得到了它。
init started
init finished
a1 executed
a2 executed
asyncio.run_coroutine_threadsafe(f("a2"), loop)