[英]What is event_loop_policy and why is it needed in python asyncio?
事件循環文檔提到了event_loop_policy
但沒有描述它是什么以及為什么需要詳細介紹這個抽象層。 (文檔甚至說可以自定義這一層)。
另外, help(asyncio.get_event_loop_policy())
只是說......
帶有用於子進程的觀察程序的UNIX事件循環策略。
然后,我變得更加困惑。 watcher
是什么? event loop
中的child processes
是什么?
事件循環政策的對象是使用創建,設置或獲取事件循環。 例如,當您調用asyncio.new_event_loop()
時,將確定具體返回的事件循環類的策略。
如果由於某種原因想要更改默認事件循環類型,則需要策略。 在單獨的可替換(方便的)策略對象中創建循環的封裝邏輯是策略編程模式 。
help(asyncio.get_event_loop_policy())
為您提供了操作系統中使用的具體策略的文檔,例如_UnixDefaultEventLoopPolicy 。
通過鏈接,您可以看到在那里實現的內容,找到觀察者的內容並閱讀它的文檔 :
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
。
我認為只有在您要編寫事件循環和/或管理它們的策略時,您才需要調查策略。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.