プラットフォームでのサポート

asyncio モジュールは可搬的であるようにデザインされていますが、いくつかのプラットフォームでは、その根底にあるアーキテクチャや性能による微妙な動作の違いや制限があります。

全てのプラットホーム

Windows

ソースコード: Lib/asyncio/proactor_events.py, Lib/asyncio/windows_events.py, Lib/asyncio/windows_utils.py


バージョン 3.8 で変更: Windows では ProactorEventLoop がデフォルトのイベントループになりました。

全ての Windows 上のイベントループは以下のメソッドをサポートしません:

SelectorEventLoop は以下の制限があります:

ProactorEventLoop は以下の制限があります:

Windows のモノトニッククロックの時間分解能は、通常約15.6ミリ秒です。最高分解能は0.5ミリ秒です。分解能はハードウエア (HPET が利用可能かどうか) および WIndows の設定に依存します。

Windows におけるサブプロセスのサポート

Windows において、デフォルトのイベントループ ProactorEventLoop はサブプロセスをサポートしますが、 SelectorEventLoop はサポートしません。

macOS

最近の macOS バージョンは完全にサポートされています。

10.8 以前の macOS

macOS 10.6, 10.7 および 10.8 では、デフォルトイベントループは selectors.KqueueSelector をしていますが、このクラスはこれらの macOS バージョンのキャラクターデバイスをサポートしていません。これらの macOS バージョンでキャラクターデバイスをサポートするためには SelectorEventLoopSelectSelector または PollSelector を使うように手動で設定します。以下はその例です:

import asyncio
import selectors

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