플랫폼 지원

asyncio 모듈은 이식성이 있도록 설계되었지만, 플랫폼의 하부 아키텍처와 기능으로 인해 일부 플랫폼에는 미묘한 차이점과 제약이 있습니다.

모든 플랫폼

윈도우

윈도우의 모든 이벤트 루프는 다음 메서드를 지원하지 않습니다:

SelectorEventLoop에는 다음과 같은 제약이 있습니다:

ProactorEventLoop에는 다음과 같은 제약이 있습니다:

윈도우에서 단조 시계의 해상도는 대개 15.6 msec 근처입니다. 최상의 해상도는 0.5 msec입니다. 해상도는 하드웨어(HPET이 사용 가능한지)와 윈도우 구성에 따라 다릅니다.

윈도우에서의 서브 프로세스 지원

윈도우의 SelectorEventLoop는 서브 프로세스를 지원하지 않습니다. 윈도우에서는, 대신 ProactorEventLoop를 사용해야 합니다:

import asyncio

asyncio.set_event_loop_policy(
    asyncio.WindowsProactorEventLoopPolicy())

asyncio.run(your_code())

ProactorEventLoop가 자식 프로세스를 관찰하는 다른 메커니즘을 가지고 있으므로, policy.set_child_watcher() 함수도 지원되지 않습니다.

macOS

최신 macOS 버전은 완전하게 지원됩니다.

macOS <= 10.8

macOS 10.6, 10.7 및 10.8에서, 기본 이벤트 루프는 selectors.KqueueSelector를 사용하는데, 이 버전에서는 문자 장치를 지원하지 않습니다. 이러한 이전 버전의 macOS에서 문자 장치를 지원하려면, SelectorEventLoopSelectSelectorPollSelector를 사용하도록 수동으로 구성할 수 있습니다. 예:

import asyncio
import selectors

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