پشتیبانی از پلتفرم

ماژول asyncio به‌گونه‌ای طراحی شده است که قابل حمل باشد، اما برخی پلتفرم‌ها به دلیل معماری و قابلیت‌های زیربنایی خود، تفاوت‌ها و محدودیت‌های ظریفی دارند.

همه‌ی سکوها

ویندوز

کد منبع: Lib/asyncio/proactor_events.py, Lib/asyncio/windows_events.py, Lib/asyncio/windows_utils.py


تغییر یافته در نسخه‌ی 3.8: در ویندوز، ProactorEventLoop اکنون حلقه رویداد پیش‌فرض است.

تمام حلقه‌های رویداد در ویندوز از متدهای زیر پشتیبانی نمی‌کنند:

SelectorEventLoop محدودیت‌های زیر را دارد:

ProactorEventLoop محدودیت‌های زیر را دارد:

دقت ساعت یکنواخت (monotonic clock) در ویندوز معمولاً حدود ۱۵٫۶ میلی‌ثانیه است. بهترین دقت ۰٫۵ میلی‌ثانیه است. دقت به سخت‌افزار (دسترس‌پذیری HPET) و پیکربندی ویندوز بستگی دارد.

پشتیبانی از زیرفرایند در ویندوز

در ویندوز، حلقه رویداد پیش‌فرض ProactorEventLoop از زیرفرآیندها پشتیبانی می‌کند، در حالی که SelectorEventLoop پشتیبانی نمی‌کند.

macOS

نسخه‌های جدید macOS به‌طور کامل پشتیبانی می‌شوند.

macOS <= 10.8

در macOS 10.6، 10.7 و 10.8، حلقه رویداد پیش‌فرض از selectors.KqueueSelector استفاده می‌کند، که از دستگاه‌های نویسه‌ای در این نسخه‌ها پشتیبانی نمی‌کند. می‌توان SelectorEventLoop را به‌صورت دستی پیکربندی کرد تا از SelectSelector یا PollSelector استفاده کند و از دستگاه‌های نویسه‌ای در این نسخه‌های قدیمی‌تر macOS پشتیبانی کند. مثال:

import asyncio
import selectors

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