ویژگی تصویر

آموزش async و await در پایتون

  /  پایتون   /  async و await در پایتون
بنر تبلیغاتی الف

در این بخش به بررسی async و await در پایتون می پردازیم، در دنیای برنامه‌نویسی، یکی از چالش‌های بزرگ، مدیریت هم‌زمانی و بهینه‌سازی زمان اجراست. پایتون به عنوان یکی از زبان‌های محبوب برنامه‌نویسی، ابزارها و کتابخانه‌های مختلفی برای مدیریت هم‌زمانی و اجرای کارها به صورت غیرهم‌زمان ارائه می‌دهد. دو عبارت کلیدی که در این زمینه به کار می‌روند، async و await هستند. این عبارات به برنامه‌نویسان امکان می‌دهند تا کدهایی بنویسند که می‌توانند به صورت غیرهم‌زمان اجرا شوند، بدون اینکه پیچیدگی‌های سنتی مرتبط با مدیریت رشته‌ها (threads) را داشته باشند.

در این مقاله، به بررسی async و await در پایتون می‌پردازیم. ابتدا به توضیح مفاهیم پایه‌ای می‌پردازیم و سپس با مثال‌های عملی، نحوه استفاده از این عبارات را در برنامه‌های واقعی نشان می‌دهیم. در نهایت، نکات و ترفندهایی برای بهبود عملکرد و کارایی کدهای غیرهم‌زمان ارائه خواهیم داد.

۱. مبانی async و await

تعریف و کاربرد

کلمه کلیدی async برای تعریف توابعی استفاده می‌شود که می‌توانند به صورت غیرهم‌زمان اجرا شوند. این توابع به جای بازگرداندن نتایج بلافاصله، یک شیء coroutine بازمی‌گردانند که می‌تواند در آینده مقداری را تولید کند. کلمه کلیدی await نیز برای متوقف کردن اجرای تابع تا زمانی که یک coroutine دیگر تکمیل شود، به کار می‌رود.

تماشا در حالت تمام صفحه

در این مثال، تابع fetch_data به صورت غیرهم‌زمان اجرا می‌شود و برنامه را برای دو ثانیه متوقف می‌کند، بدون اینکه اجرای دیگر بخش‌های برنامه را متوقف کند.

مزایا

استفاده از async و await باعث بهبود کارایی و بهره‌وری برنامه‌ها می‌شود. این عبارات به برنامه‌ها امکان می‌دهند تا به جای منتظر ماندن برای تکمیل یک عملیات، به اجرای دیگر وظایف ادامه دهند. این قابلیت در برنامه‌هایی که نیاز به انجام عملیات‌های I/O (ورودی/خروجی) دارند، مانند خواندن فایل‌ها، برقراری ارتباط با شبکه یا تعامل با پایگاه‌داده‌ها، بسیار مفید است.

۲. ایجاد توابع غیرهم‌زمان

ساختار و نحو

توابع غیرهم‌زمان با استفاده از کلمه کلیدی async تعریف می‌شوند. این توابع می‌توانند شامل یک یا چند عبارت await باشند که نشان‌دهنده توقف اجرای تابع تا تکمیل عملیات مربوطه است.

تماشا در حالت تمام صفحه

مثال عملی

در مثال زیر، یک تابع غیرهم‌زمان برای شبیه‌سازی بارگذاری داده از یک سرور استفاده می‌شود. این تابع با استفاده از asyncio.sleep یک توقف زمانی شبیه‌سازی می‌کند.

تماشا در حالت تمام صفحه

۳. مدیریت وظایف غیرهم‌زمان

ایجاد و اجرا

پایتون با استفاده از کتابخانه asyncio ابزارهای مختلفی برای مدیریت وظایف غیرهم‌زمان ارائه می‌دهد. یکی از این ابزارها، asyncio.create_task است که برای ایجاد و اجرای وظایف غیرهم‌زمان به کار می‌رود.

تماشا در حالت تمام صفحه

ترکیب وظایف

گاهی نیاز است که چندین وظیفه به صورت موازی اجرا شوند. در این حالت، می‌توان از asyncio.gather استفاده کرد.

تماشا در حالت تمام صفحه

۴. خطاها و مدیریت آنها در توابع غیرهم‌زمان

مدیریت خطاها

همانند توابع سنتی، توابع غیرهم‌زمان نیز می‌توانند خطاها را مدیریت کنند. این کار با استفاده از بلوک‌های try و except انجام می‌شود.

تماشا در حالت تمام صفحه

مثال عملی

در این مثال، یک تابع غیرهم‌زمان ایجاد می‌شود که به طور تصادفی یک خطا تولید می‌کند. خطا با استفاده از بلوک try و except مدیریت می‌شود.

تماشا در حالت تمام صفحه

۵. بهینه‌سازی و نکات پیشرفته

استفاده از semaphore

برای محدود کردن تعداد وظایف هم‌زمان، می‌توان از asyncio.Semaphore استفاده کرد. این روش به بهینه‌سازی و مدیریت بهتر منابع کمک می‌کند.

تماشا در حالت تمام صفحه

بررسی عملکرد

برای بررسی عملکرد توابع غیرهم‌زمان و اطمینان از بهینه بودن کدها، می‌توان از ابزارهای مختلفی مانند time یا cProfile استفاده کرد.

تماشا در حالت تمام صفحه

استفاده از async و await در پایتون امکان نوشتن کدهای کارآمد و بهینه برای مدیریت عملیات غیرهم‌زمان را فراهم می‌کند. با درک و استفاده صحیح از این عبارات، برنامه‌نویسان می‌توانند عملکرد برنامه‌های خود را بهبود بخشند و تجربه بهتری برای کاربران خود فراهم کنند. این مقاله به معرفی مبانی، نحوه ایجاد و مدیریت توابع غیرهم‌زمان، مدیریت خطاها و نکات پیشرفته برای بهینه‌سازی عملکرد کدها پرداخته است. با استفاده از این راهنما، شما می‌توانید برنامه‌های پیشرفته‌تری را با استفاده از async و await ایجاد کنید و بهره‌وری خود را افزایش دهید.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
بنر تبلیغاتی ج