Python loop.create_task 和 asyncio.run_coroutine_threadsafe 之间的异步区别

Python asyncio difference between loop.create_task and asyncio.run_coroutine_threadsafe

从事件线程外部将协程推送到事件线程的 pythonic 方法是什么?

实际信息:

从 Python 3.7 高级函数 asyncio.create_task(coro) was added 开始,可以代替 asyncio.ensure_futureloop.create_task 来创建任务。

Python 文档 refersasyncio.create_task(coro) 关于“创建新任务的首选方式”。

原回答:

需要说明的是:通常在单线程中使用 asyncio 运行s。并发性不是由线程提供的,而是通过对 运行 不同的协程使用单个事件循环提供的。

如果你想同时提交 运行 协程而不等待它的结果你应该从 create_task).

创建 using asyncio.ensure_future (

但是,如果您的应用程序使用多个线程,并且您希望将协程 运行 从一个线程提交到另一个线程中的事件循环 运行,您应该使用 run_coroutine_threadsafe。这是很好的 运行 在另一个线程中进行事件循环并从主线程向 in 提交协程。