asyncio --- ورودی/خروجی ناهمگام¶
asyncio کتابخانهای است برای نوشتن کد همروند با استفاده از سینتکس async/await.
asyncio بهعنوان پایهای برای چندین چارچوب ناهمگام پایتون استفاده میشود که سرورهای شبکه و وب با کارایی بالا، کتابخانههای اتصال به پایگاه داده، صفهای وظیفه توزیعشده و غیره را فراهم میکنند.
asyncio اغلب برای کد شبکهای سطحبالا و ساختاریافته و محدود به ورودی/خروجی (IO-bound) کاملاً مناسب است.
همچنین ملاحظه نمائید
- مروری مفهومی بر asyncio
توضیح مبانی asyncio.
asyncio مجموعهای از APIهای سطح بالا را برای موارد زیر فراهم میکند:
اجرای همروالهای پایتون بهصورت همزمان و داشتن کنترل کامل بر اجرای آنها؛
کنترل زیرفرایندها؛
توزیع وظایف از طریق صفها؛
همگامسازی کد همروند؛
برای دروننگری، asyncio APIها و ابزارهایی برای:
بازرسی گراف فراخوانی ناهمگام وظایف و آیندهنماها؛
بازرسی وظایف در فرایند پایتون دیگری که در حال اجرا است با ابزارهای خط فرمان؛
علاوه بر این، APIهای سطح پایین برای توسعهدهندگان کتابخانه و چارچوب وجود دارد تا:
ایجاد و مدیریت حلقههای رویداد، که APIهای ناهمگامی برای شبکهسازی، اجرای زیرفرایندها، مدیریت سیگنالهای سیستمعامل و غیره فراهم میکنند؛
پیادهسازی پروتکلهای کارآمد با استفاده از transports؛
پل بین کتابخانههای مبتنی بر کالبک و کد با سینتکس async/await.
دسترسپذیری: not WASI.
این ماژول روی WebAssembly کار نمیکند یا در دسترس نیست. برای اطلاعات بیشتر سکوهای WebAssembly را ببینید.
asyncio REPL
میتوانید یک زمینه همروند asyncio را در REPL آزمایش کنید:
$ python -m asyncio
asyncio REPL ...
Use "await" directly instead of "asyncio.run()".
Type "help", "copyright", "credits" or "license" for more information.
>>> import asyncio
>>> await asyncio.sleep(10, result='hello')
'hello'
این پوسته تعاملی (REPL) سازگاری محدودی با PYTHON_BASIC_REPL دارد. توصیه میشود که برای عملکرد کامل و جدیدترین قابلیتها از پوسته تعاملی پیشفرض (REPL) استفاده شود.
یک رویداد حسابرسی cpython.run_stdin را بدون آرگومان پرتاب میکند.
تغییر یافته در نسخهی 3.12.5: (همچنین 3.11.10، 3.10.15، 3.9.20 و 3.8.20) رویدادهای حسابرسی را منتشر میکند.
تغییر یافته در نسخهی 3.13: در صورت امکان از PyREPL استفاده میکند، که در این صورت PYTHONSTARTUP نیز اجرا میشود. رویدادهای حسابرسی (audit events) را منتشر میکند.
مرجع
APIهای سطح بالا
APIهای دروننگری
APIهای سطح پایین
راهنماها و خودآموزها
توجه
کد منبع asyncio را میتوانید در Lib/asyncio/ پیدا کنید.