平臺支援

asyncio module(模組)被設計為可攜的 (portable),但由於平臺的底層架構和功能不同,在一些平臺上存在細微的差異和限制。

所有平台

Windows

原始碼:Lib/asyncio/proactor_events.py、source:`Lib/asyncio/windows_events.py、source:`Lib/asyncio/windows_utils.py


在 3.8 版的變更: 在 Windows 上,現在 ProactorEventLoop 是預設的事件迴圈。

Windows 上的所有事件迴圈都不支援以下 method(方法):

SelectorEventLoop 有以下限制:

ProactorEventLoop 有以下限制:

Windows 上單調時鐘 (monotonic clock) 的解析度大約為 15.6 毫秒。最佳的解析度是 0.5 毫秒。解析度和硬體(HPET 是否可用)與 Windows 的設定有關。

Windows 的子行程支援

在 Windows 上,預設的事件迴圈 ProactorEventLoop 支援子行程,而 SelectorEventLoop 則不支援。

也不支援 policy.set_child_watcher() 函式,ProactorEventLoop 在監視子行程上有不同的機制。

macOS

完整支援現在普遍流行的 macOS 版本。

macOS <= 10.8

在 macOS 10.6、10.7 和 10.8 上,預設的事件迴圈是使用 selectors.KqueueSelector,在這些版本上它並不支援字元裝置 (character device)。可以手工設置 SelectorEventLoop 來使用 SelectSelectorPollSelector 以在這些舊版 macOS 上支援字元裝置。例如:

import asyncio
import selectors

selector = selectors.SelectSelector()
loop = asyncio.SelectorEventLoop(selector)
asyncio.set_event_loop(loop)