آکادمی چابک | مرجع تخصصی جدیدترین دوره‌های آموزشی
جستجو برای:
سبد خرید 0
  • صفحه اصلی
  • دوره های آموزشی
  • اخبار و مقالات
  • درباره ما
  • تماس با ما
ورود
[suncode_otp_login_form]
گذرواژه خود را فراموش کرده اید؟
عضویت
[suncode_otp_registration_form]

ارسال مجدد کد یکبار مصرف (00:90)
  • 02177010771
  • info@chabokacademy.com
  • اخبار و مقالات
  • علاقمندی ها
آکادمی چابک | مرجع تخصصی جدیدترین دوره‌های آموزشی
  • صفحه اصلی
  • دوره های آموزشی
  • اخبار و مقالات
  • درباره ما
  • تماس با ما
شروع کنید
0

وبلاگ

آکادمی چابک | مرجع تخصصی جدیدترین دوره‌های آموزشی > اخبار و مقالات > برنامه نویسی > آموزش async و await در پایتون؛ اجرای همزمان بدون دردسر!

آموزش async و await در پایتون؛ اجرای همزمان بدون دردسر!

آذر 5, 1404
ارسال شده توسط آکادمی چابک
برنامه نویسی
async و await در پایتون

فهرست مطالب این نوشته

Toggle
  • مفهوم async await در پایتون چیست؟
  • اجزای اصلی async و await در پایتون
  • در آموزش async await در پایتون از چه ماژول‌هایی باید استفاده کنیم؟
  • کاربرد async و await در پایتون
  • آیا مفهوم async await در پایتون برای ساخت ربات تلگرام هم کاربرد دارد؟
  • چطور در async await در پایتون خطاهای همزمانی را مدیریت کنیم؟
  • بهترین روش‌ها در استفاده از async و await در پایتون
تعداد بازدید: 20
5/5 امتیاز

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

در ادامه نحوه استفاده از async await در پایتون را آموزش می‌دهیم و کاربردهای اصلی آن را در پروژه‌ها بررسی می‌کنیم.

اگر می‌خواهید فرزندتان با بازی و خلاقیت، برنامه‌نویسی را یاد بگیرد؛ دوره اسکرچ جونیور را از دست ندهید!
تخفیف‌های شگفت‌انگیز جشنواره آکادمی چابک
تخفیف بگیر و ثبت نام کن!

مفهوم async await در پایتون چیست؟

Async در پایتون یعنی اجرای چند کار به‌صورت همزمان، بدون این‌که جریان اصلی برنامه متوقف شود. برخلاف مدل سنتی که هر تابع تا پایان اجرای خود بقیه را معطل می‌کرد، در مدل ناهمگام، توابع می‌توانند “منتظر” نتیجه بمانند اما در همین حین بقیه کارها اجرا شوند.

تفاوت Async با Threading و Multiprocessing

در کنار Async، مدل‌های دیگری هم برای اجرای همزمان وظایف وجود دارد که هرکدام بسته به نوع پروژه عملکرد متفاوتی دارند. این مدل‌ها هرچند در ظاهر مشابه‌اند، اما تفاوت‌های آشکاری با هم دارند که بهتر است با آن‌ها آشنا شوید:

مدل ویژگی کاربرد اصلی
Threading اجرای همزمان چند Thread در یک پردازش کارهای I/O مثل درخواست وب
Multiprocessing استفاده از چند هسته CPU کارهای CPU-bound مثل تحلیل داده
Async (async و await در پایتون) اجرای غیرمسدودکننده در یک Thread عملیات شبکه، فایل یا دیتابیس

اجزای اصلی async و await در پایتون

ماژول استاندارد پایتون برای برنامه‌نویسی ناهمگام، asyncio است. با این ماژول می‌توان توابعی ساخت که همزمان اجرا شوند. عناصر این ماژول شامل:

  • async def: تعریف تابع ناهمگام (Coroutine Function)
  • await: توقف موقت تابع تا اتمام نتیجه و آزاد شدن Event Loop
  • Event Loop: مغز مرکزی اجرای توابع ناهمگام
  • asyncio.run(): شروع اجرای حلقه رویداد
  • asyncio.gather(): اجرای چند Coroutine همزمان
دانلود Dev C++ برای ویندوز همراه با آموزش نصب گام‌به‌گام
بخوانید

یک مثال از این اجزا برای‌تان آورده‌ایم تا بتوانید راحت‌تر درک‌شان کنید:

import asyncio

async def greet():

print(“سلام!”)

await asyncio.sleep(1)

print(“به دنیای async و await در پایتون خوش آمدید!”)

asyncio.run(greet())

در این مثال، اجرای تابع بین دو خط چاپ متوقف می‌شود اما برنامه قفل نمی‌کند؛ یعنی می‌تواند همزمان کارهای دیگری انجام دهد.

فرصت یادگیری پایتون را از دست ندهید! با ثبت‌نام در این دوره، به دنیای برنامه‌نویسی وارد شوید و پروژه‌های جذاب و کاربردی بسازید! تخفیف‌های شگفت‌انگیز جشنواره آکادمی چابک
همین حالا ثبت‌نام کنید!

در آموزش async await در پایتون از چه ماژول‌هایی باید استفاده کنیم؟

در دوره‌های حرفه‌ای آموزش async await در پایتون، با ابزارهایی آشنا می‌شوید که کار با عملیات همزمان را ساده‌تر می‌کنند. این ماژول‌ها مزیت مهمی دارند: می‌توانند سرعت اجرای برنامه را بالا ببرند بدون اینکه منابع سیستم را بیهوده درگیر کنند و همین ویژگی باعث شده این دوره‌ها برای علاقه‌مندان به آموزش پایتون برای بازی‌سازها و کسانی که با کاربرد اسکرچ جونیور شروع به یادگیری برنامه‌نویسی می‌کنند، بسیار مفید و کاربردی باشد.

برای همین بهتر است ماژول‌های زیر را بشناسید:

ماژول کاربرد
asyncio پایه و اساس برنامه‌نویسی ناهمگام در پایتون
aiohttp ارسال و دریافت درخواست‌های HTTP به‌صورت Async
aiosqlite / aiomysql اتصال ناهمگام به دیتابیس‌ها
aiofiles خواندن و نوشتن فایل‌ها به شکل غیرمسدودکننده

مثلاً برای دانلود چند صفحه وب همزمان:

import aiohttp, asyncio

async def fetch(url):

async with aiohttp.ClientSession() as session:

async with session.get(url) as response:

return await response.text()

async def main():

urls = [“https://example.com”, “https://python.org”]

results = await asyncio.gather(*(fetch(u) for u in urls))

print(len(results))

asyncio.run(main())

chabokacademy
دوره‌های آموزشی آکادمی چابک
با تخفیف‌های ویژه آکادمی چابک، یادگیری را شروع کنید!
مشاهده دوره‌ها

کاربرد async و await در پایتون

آموزش جامع Async در Python زمانی ارزشمند است که بتوان آن را در پروژه‌های واقعی به کار گرفت. پروژه‌هایی مثل:

  • ربات‌های تلگرام: برای پاسخگویی همزمان به چند کاربر
  • APIهای وب با FastAPI یا Sanic: برای مدیریت درخواست‌های زیاد
  • برنامه‌های جمع‌آوری داده (Web Scraping): برای دریافت سریع داده از صدها URL
  • مدیریت فایل‌های زیاد در سرور: بدون قفل شدن فرآیند اصلی

مفهوم async await در پایتون

آیا مفهوم async await در پایتون برای ساخت ربات تلگرام هم کاربرد دارد؟

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

در ساخت ربات تلگرام با کتابخانه‌هایی مثل aiogram، می‌توان از async و await در پایتون برای مدیریت پیام‌ها، درخواست‌ها و پاسخ‌ها استفاده کرد تا ربات بتواند با هزاران کاربر به‌صورت همزمان و بدون کندی کار کند.

پایتون برای چه سنی مناسب است؟
بخوانید

نمونه:

from aiogram import Bot, Dispatcher, types

import asyncio

async def main():

bot = Bot(“TOKEN”)

dp = Dispatcher()

@dp.message()

async def handle_message(msg: types.Message):

await msg.answer(“سلام! من با async و await در پایتون نوشته شدم.”)

await dp.start_polling(bot)

asyncio.run(main())

چطور در async await در پایتون خطاهای همزمانی را مدیریت کنیم؟

وقتی چندین Coroutine همزمان اجرا می‌شوند، اغلب یکی دو مورد از آن‌ها خطا می‌دهند. برای جلوگیری از توقف کل برنامه باید خطاها را به‌درستی مدیریت کنیم و یادگیری نحوه مدیریت این خطاها بخش مهمی از آموزش داده‌کاوی با پایتون است تا برنامه‌ها پایدار و قابل اطمینان باقی بمانند.

روش‌های پیشنهادی:

  • استفاده از try/except داخل هر Coroutine
  • استفاده از asyncio.wait() با timeout
  • کنترل دقیق با asyncio.Lock برای جلوگیری از تداخل دسترسی‌ها

در پایتون ۳.۱۱ به بعد، می‌توان از ExceptionGroup استفاده کرد:

try:

await asyncio.gather(task1(), task2())

except* ValueError as e:

print(“خطای مقدار:”, e)

بهترین روش‌ها در استفاده از async و await در پایتون

گاهی در پروژه‌های برنامه‌نویسی، دانستن چند نکته‌ی ساده می‌تواند عملکرد برنامه را چندین برابر بهبود دهد. نکاتی مثل:

  • همیشه از asyncio.run() برای شروع برنامه استفاده کنید.
  • برای وظایف زیاد، asyncio.gather() بهتر از حلقه‌های ساده است.
  • در کارهای CPU-bound از async استفاده نکنید (بهتر است multiprocessing باشد).
  • از context managerهای ناهمگام مثل async with برای مدیریت منابع استفاده کنید.

آموزش جامع Async در python

چه زمانی از Async استفاده نکنیم؟

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

Async و Await در پایتون امکان اجرای همزمان وظایف را بدون قفل شدن برنامه فراهم می‌کند و توسعه‌دهندگان می‌توانند عملکرد سرورها و ربات‌ها را به‌طور قابل‌توجهی بهینه کنند.

جمع‌بندی

بنابراین دیدیم که async و await در پایتون راهکارهایی هستند برای اجرای همزمان وظایف بدون قفل شدن برنامه. بیشتر توسعه‌دهندگان از آن برای بهینه‌سازی عملکرد سرورها، APIها و ربات‌های تلگرام استفاده می‌کنند، اما در پروژه‌های دیگر مثل پایپ‌لاین‌های داده و برنامه‌های وب بلادرنگ هم کاربرد دارند و آموزش‌های عملی این مفاهیم در آکادمی چابک ارائه می‌شود.

اگر می‌خواهید در زمینه‌هایی مثل برنامه‌نویسی ناهمگام، توسعه سرورهای FastAPI و طراحی سیستم‌های همزمان در پایتون دانش بیشتری پیدا کنید و تخصص خود را گسترش دهید، می‌توانید در دوره‌های تخصصی آکادمی چابک شرکت کنید. برای اطلاع از جدیدترین دوره‌ها و تخفیف‌های ویژه، همین حالا به صفحه محصولات ما سر بزنید.

بهترین زبان‌های برنامه نویسی برای کودکان در سال ۲۰۲۵
بخوانید

منبع:

theserverside.com

قبلی آموزش برنامه‌نویسی یادگیری عمیق با پایتون؛ از صفر تا اولین شبکه عصبی با TensorFlow و Keras
بعدی آموزش exe گرفتن از پایتون به زبان ساده، چطور فایل پایتون رو به برنامه ویندوز تبدیل کنیم؟

دیدگاهتان را بنویسید لغو پاسخ

جستجو برای:
دسته‌ها
  • آموزش گرافیک کامپیوتری
  • امنیت و شبکه
  • برنامه نویسی
  • پایگاه داده
  • سیستم عامل
  • طراحی وب
  • کسب و کار
  • هوش مصنوعی
برچسب‌ها
MBA آموزش و کاربرد هوش مصنوعی اهداف شغلی بازاریابی محصول کسب و کار اینترنتی
logoacademy
آکادمی چابک با برگزاری دوره‌های جامع و تخصصی در حوزه‌ی نرم‌افزار، تحلیل کسب‌وکار و همچنین مشاوره‌های تخصصی در این حوزه‌ها سعی بر آن دارد تا علاقمندان پس از گذراندن دوره‌های مربوطه بتوانند از دانش و مهارت‌ خود بهترین استفاده را کرده و وارد بازار کار شوند.
 

ارتباط با ما

  • ۰۲۱۷۷۰۱۰۷۷۱
  • info@chabokacademy.com
  • حکیمیه، بلوار بابائیان، ۱۵ متری امام حسین، بن بست شفاعت، پلاک ۱۵، طبقه ۷

دسترسی سریع

  • خانه
  • دوره ها
  • اخبار و مقالات
  • تماس با ما
  • خانه
  • دوره ها
  • اخبار و مقالات
  • تماس با ما

نماد‌ها و خبرنامه

۱۴۰۲© کلیه حقوق سایت نزد آکادمی چابک محفوظ است.

ورود
با شماره موبایل
آیا هنوز عضو نشده اید؟ اکنون ثبت نام کنید
ثبت نام
قبلا عضو شده اید؟ اکنون وارد شوید
محافظت شده توسط