簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM