gpt4 book ai didi

python - python3 asyncio 是否使用像 Rust Tokio 这样的工作窃取调度程序?

转载 作者:行者123 更新时间:2023-12-02 18:28:23 25 4
gpt4 key购买 nike

Python 3 asyncio 是否使用像 Rust Tokio 这样的工作窃取调度程序?默认调度程序的行为是什么?它是否记录在某处?

最佳答案

"Work-stealing"是多线程执行器的一个属性。 Python asyncio 的执行器(事件循环)是单线程的,因此根据定义它不是工作窃取。 asyncio 事件循环 wrt 线程的行为在 Concurrency and Multithreading 中记录(以及其他地方)文档部分。

至于用于调度的算法,它是有意未指定的,但是 stdlib implementation用途:

  • 一个双端队列,用于存储准备运行的回调(使用 call_soon()create_task() 安排的回调)以及与准备就绪的文件描述符关联的回调读/写,和
  • 一个二进制堆,用于存储为特定时间安排的回调,按照它们应该触发的绝对时间排序。这包括由 loop.call_after()loop.call_at() 调度的回调,还包括由 asyncio.sleep() 暂停的协程的延续,它在内部使用 loop.call_at()

在每次循环迭代中,循环 waits for something to happen在与协程和 sets the timeout 关联的文件描述符上在最近的基于时间的回调中中断 sleep ,以防在此之前没有发生任何有趣的事情。它继续调用就绪回调和计划在当前或更早时间运行的超时。重复此操作,直到指示事件循环停止。

关于python - python3 asyncio 是否使用像 Rust Tokio 这样的工作窃取调度程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69787603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com