平台支持

asyncio 模块被设计为可移植的,但由于平台的底层架构和功能,一些平台存在细微的差异和限制。

所有平台

Windows

源代码: Lib/asyncio/proactor_events.py, Lib/asyncio/windows_events.py, Lib/asyncio/windows_utils.py


在 3.8 版更改: 在 Windows 上,ProactorEventLoop 现在是默认的事件循环。

Windows上的所有事件循环都不支持以下方法:

SelectorEventLoop 有下列限制:

ProactorEventLoop 有下列限制:

The resolution of the monotonic clock on Windows is usually around 15.6 milliseconds. The best resolution is 0.5 milliseconds. The resolution depends on the hardware (availability of HPET) and on the Windows configuration.

Windows的子进程支持

在 Windows 上,默认的事件循环 ProactorEventLoop 支持子进程,而 SelectorEventLoop 则不支持。

也不支持 policy.set_child_watcher() 函数,ProactorEventLoop 有不同的机制来监视子进程。

macOS

完整支持流行的macOS版本。

macOS <= 10.8

在 macOS 10.6, 10.7 和 10.8 上,默认的事件循环使用 selectors.KqueueSelector,在这些版本上它并不支持字符设备。 可以手工配置 SelectorEventLoop 来使用 SelectSelectorPollSelector 以在这些较老版本的 macOS 上支持字符设备。 例如:

  1. import asyncio
  2. import selectors
  3. selector = selectors.SelectSelector()
  4. loop = asyncio.SelectorEventLoop(selector)
  5. asyncio.set_event_loop(loop)