这些函数有什么区别
What's the difference between these functions
这些函数有什么区别
create_task
和 call_soon
call_soon_threadsafe
和 run_coroutine_threadsafe
create_task 对比 call_soon
这两个函数调度协程的执行,不是线程安全的。
create_task
returns 一个 Task
对象,和 call_soon
returns Handle
对象,但是除此之外还有什么区别吗,特别是在用法上?
call_soon_threadsafe 对比 run_coroutine_threadsafe
这两个函数是从不同的 OS 线程调用的,而不是事件循环 运行 的线程。在大多数情况下,我可以使用它们中的任何一个。
create_task
vs call_soon
- these two functions schedule the execution of a Coroutines
不,只有 create_task
调度协程(异步函数)的执行。 call_soon
安排 one-shot 执行普通函数。
因此,如果您有一个用 async def
定义的协程 x
,您希望“在后台”执行,您可以调用 asyncio.create_task(x())
。如果你有一个用 def
定义的函数 f
,你想在事件循环下一次空闲时立即执行,你调用 loop.call_soon(f)
.
run_coroutine_threadsafe
和 call_soon_threadsafe
的使用差异相同,它们允许从不同的线程向 运行 事件循环提交工作。
这些函数有什么区别
create_task
和call_soon
call_soon_threadsafe
和run_coroutine_threadsafe
create_task 对比 call_soon
这两个函数调度协程的执行,不是线程安全的。
create_task
returns 一个 Task
对象,和 call_soon
returns Handle
对象,但是除此之外还有什么区别吗,特别是在用法上?
call_soon_threadsafe 对比 run_coroutine_threadsafe
这两个函数是从不同的 OS 线程调用的,而不是事件循环 运行 的线程。在大多数情况下,我可以使用它们中的任何一个。
create_task
vscall_soon
- these two functions schedule the execution of a Coroutines
不,只有 create_task
调度协程(异步函数)的执行。 call_soon
安排 one-shot 执行普通函数。
因此,如果您有一个用 async def
定义的协程 x
,您希望“在后台”执行,您可以调用 asyncio.create_task(x())
。如果你有一个用 def
定义的函数 f
,你想在事件循环下一次空闲时立即执行,你调用 loop.call_soon(f)
.
run_coroutine_threadsafe
和 call_soon_threadsafe
的使用差异相同,它们允许从不同的线程向 运行 事件循环提交工作。