플랫폼 지원¶
asyncio
모듈은 이식성이 있도록 설계되었지만, 플랫폼의 하부 아키텍처와 기능으로 인해 일부 플랫폼에는 미묘한 차이점과 제약이 있습니다.
모든 플랫폼¶
loop.add_reader()
와loop.add_writer()
는 파일 I/O를 감시하는데 사용할 수 없습니다.
윈도우¶
소스 코드: Lib/asyncio/proactor_events.py, Lib/asyncio/windows_events.py, Lib/asyncio/windows_utils.py
버전 3.8에서 변경: 윈도우에서, ProactorEventLoop
는 이제 기본 이벤트 루프입니다.
윈도우의 모든 이벤트 루프는 다음 메서드를 지원하지 않습니다:
loop.create_unix_connection()
와loop.create_unix_server()
는 지원되지 않습니다.socket.AF_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()
메서드는 구현되지 않습니다.서브 프로세스는 지원되지 않습니다, 즉,
loop.subprocess_exec()
와loop.subprocess_shell()
메서드가 구현되지 않습니다.
ProactorEventLoop
에는 다음과 같은 제약이 있습니다:
loop.add_reader()
와loop.add_writer()
메서드는 지원되지 않습니다.
윈도우에서 단조 시계의 해상도는 대개 15.6 msec 근처입니다. 최상의 해상도는 0.5 msec입니다. 해상도는 하드웨어(HPET이 사용 가능한지)와 윈도우 구성에 따라 다릅니다.
윈도우에서의 서브 프로세스 지원¶
윈도우에서, 기본 이벤트 루프 ProactorEventLoop
는 서브 프로세스를 지원하지만, SelectorEventLoop
는 그렇지 않습니다.
ProactorEventLoop
가 자식 프로세스를 관찰하는 다른 메커니즘을 가지고 있으므로, policy.set_child_watcher()
함수도 지원되지 않습니다.
macOS¶
최신 macOS 버전은 완전하게 지원됩니다.
macOS <= 10.8
macOS 10.6, 10.7 및 10.8에서, 기본 이벤트 루프는 selectors.KqueueSelector
를 사용하는데, 이 버전에서는 문자 장치를 지원하지 않습니다. 이러한 이전 버전의 macOS에서 문자 장치를 지원하려면, SelectorEventLoop
가 SelectSelector
나 PollSelector
를 사용하도록 수동으로 구성할 수 있습니다. 예:
import asyncio
import selectors
selector = selectors.SelectSelector()
loop = asyncio.SelectorEventLoop(selector)
asyncio.set_event_loop(loop)