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_future
和 loop.create_task
来创建任务。
Python 文档 refers 到 asyncio.create_task(coro)
关于“创建新任务的首选方式”。
原回答:
需要说明的是:通常在单线程中使用 asyncio 运行s。并发性不是由线程提供的,而是通过对 运行 不同的协程使用单个事件循环提供的。
如果你想同时提交 运行 协程而不等待它的结果你应该从 create_task
).
创建 using asyncio.ensure_future
(
但是,如果您的应用程序使用多个线程,并且您希望将协程 运行 从一个线程提交到另一个线程中的事件循环 运行,您应该使用 run_coroutine_threadsafe
。这是很好的 运行 在另一个线程中进行事件循环并从主线程向 in 提交协程。
从事件线程外部将协程推送到事件线程的 pythonic 方法是什么?
实际信息:
从 Python 3.7 高级函数 asyncio.create_task(coro)
was added 开始,可以代替 asyncio.ensure_future
和 loop.create_task
来创建任务。
Python 文档 refers 到 asyncio.create_task(coro)
关于“创建新任务的首选方式”。
原回答:
需要说明的是:通常在单线程中使用 asyncio 运行s。并发性不是由线程提供的,而是通过对 运行 不同的协程使用单个事件循环提供的。
如果你想同时提交 运行 协程而不等待它的结果你应该从 create_task
).
asyncio.ensure_future
(但是,如果您的应用程序使用多个线程,并且您希望将协程 运行 从一个线程提交到另一个线程中的事件循环 运行,您应该使用 run_coroutine_threadsafe
。这是很好的