gpt4 book ai didi

python - 什么是 event_loop_policy,为什么在 python asyncio 中需要它?

转载 作者:行者123 更新时间:2023-12-04 18:57:36 30 4
gpt4 key购买 nike

event loops documentation提到 event_loop_policy但没有详细描述它是什么以及为什么需要这个抽象层。
(文档甚至说可以自定义这一层)。

此外,help(asyncio.get_event_loop_policy())只是说...

UNIX event loop policy with a watcher for child processes.



然后,我变得更加困惑。什么是 watcher ?什么是 child processesevent loop ?

最佳答案

事件循环策略是一个对象 that is used创建、设置或获取事件循环。例如,当您调用 asyncio.new_event_loop()政策决定具体返回的事件循环的类。

如果您出于某种原因想要更改默认事件循环类型,则需要策略。在单独的可替换(方便)策略对象中封装创建循环的逻辑是 strategy programming pattern .
help(asyncio.get_event_loop_policy())为您提供操作系统中使用的具体策略的文档,在您的情况下为 _UnixDefaultEventLoopPolicy .

通过链接,您可以看到那里的实现方式,找到 what watcher is并阅读它是docs :

 class SafeChildWatcher(BaseChildWatcher):
"""'Safe' child watcher implementation.

This implementation avoids disrupting other code spawning processes by
polling explicitly each process in the SIGCHLD handler instead of calling
os.waitpid(-1).

This is a safe solution but it has a significant overhead when handling a
big number of children (O(n) each time SIGCHLD is raised)
"""

如您所见,它是非常低级的、特定于操作系统的东西,您通常不需要它来使用 asyncio .

我认为只有在您要编写事件循环和/或管理它们的策略时,您才可能需要调查策略。

关于python - 什么是 event_loop_policy,为什么在 python asyncio 中需要它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48604341/

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