Python平台支持

python lib

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

所有平台¶

  • loop.add_reader()loop.add_writer() 不能用来监视文件I/O。

Windows¶

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

  • 不支持 loop.create_unix_connection()loop.create_unix_server()socket.AF_UNIX 套接字相关参数仅限于Unix。

  • 不支持 loop.add_signal_handler()loop.remove_signal_handler()

SelectorEventLoop 有下列限制:

  • SelectSelector 只被用于等待套接字事件:它支持套接字且最多支持512个套接字。

  • loop.add_reader()loop.add_writer() 只接受套接字处理回调函数(如管道、文件描述符等都不支持)。

  • 因为不支持管道,所以 loop.connect_read_pipe()loop.connect_write_pipe() 方法没有实现。

  • 不支持 Subprocesses ,也就是 loop.subprocess_exec()loop.subprocess_shell() 方法没有实现。

ProactorEventLoop 有下列限制:

  • 不支持 loop.create_datagram_endpoint() 方法。

  • 不支持 loop.add_reader()loop.add_writer() 方法。

Windows上单调时钟的分辨率大约为 15.6 毫秒。最佳的分辨率是 0.5 毫秒。分辨率依赖于具体的硬件(HPET)和Windows的设置。

Windows的子进程支持¶

Windows上的 SelectorEventLoop 不支持子进程,使用 ProactorEventLoop 代替它:

python3 notranslate">
importasyncio

asyncio.set_event_loop_policy(

asyncio.WindowsProactorEventLoopPolicy())

asyncio.run(your_code())

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

macOS¶

完整支持流行的macOS版本。

macOS <= 10.8

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

importasyncio

importselectors

selector=selectors.SelectSelector()

loop=asyncio.SelectorEventLoop(selector)

asyncio.set_event_loop(loop)

以上是 Python平台支持 的全部内容, 来源链接: utcz.com/z/508336.html

回到顶部