这些功能有什么区别

Puc*_*ker 2 python python-asyncio python-3.7

这些功能有什么区别

  1. create_taskcall_soon
  2. call_soon_threadsaferun_coroutine_threadsafe

create_task 与 call_soon

这两个函数调度协程的执行,不是线程安全的。
create_task返回一个Task对象,和call_soon返回Handle一个对象,但是除此之外还有什么区别,特别是在用法上?

call_soon_threadsafe 与 run_coroutine_threadsafe

这两个函数应该从与运行事件循环的线程不同的操作系统线程调用。在大多数情况下,我可以使用其中任何一个。

use*_*342 7

create_taskvs call_soon- 这两个函数安排协程的执行

不,仅create_task安排协程(异步函数)的执行。call_soon安排普通函数的一次性执行。

因此,如果您x定义了一个async def想要“在后台”执行的协程,则可以调用asyncio.create_task(x()). f如果您定义了一个函数,def您希望在事件循环下次空闲时立即执行该函数,则可以调用loop.call_soon(f).

用法上的相同差异也适用于run_coroutine_threadsafecall_soon_threadsafe,它允许从不同的线程将工作提交到正在运行的事件循环。