Python3
202 subscribers
102 photos
6 videos
26 files
518 links
🎓 آموزش و پروژه‌های Python
آموزش‌های کاربردی و پروژه‌های عملی Python برای همه سطوح. 🚀
Download Telegram
📚 آموزش برنامه‌های غیرهمزمان با Asyncio در پایتون

سلام دوستان ! امروز قصد داریم با کتابخانه Asyncio در پایتون، برنامه‌های غیرهمزمان بسازیم. Asyncio به ما اجازه می‌دهد تا برنامه‌های کارآمدتری بنویسیم که می‌توانند چندین وظیفه را به طور همزمان اجرا کنند. 🎓🔄

مراحل ساخت برنامه‌های غیرهمزمان:

1. Asyncio چیست؟
Asyncio یک کتابخانه برای نوشتن برنامه‌های همزمان و با کارایی بالا در پایتون است. با استفاده از async و await، می‌توانیم وظایف (tasks) را به طور همزمان اجرا کنیم بدون اینکه نیاز به چند نخی (multithreading) یا چند پردازشی (multiprocessing) داشته باشیم.

2. نصب Asyncio:
Asyncio به صورت پیشفرض در پایتون 3.4 به بعد موجود است و نیاز به نصب جداگانه ندارد.

3. نوشتن کد:


    import asyncio

async def fetch_data(delay, name):
print(f"Start fetching {name}")
await asyncio.sleep(delay)
print(f"Finished fetching {name}")

async def main():
task1 = asyncio.create_task(fetch_data(2, 'data1'))
task2 = asyncio.create_task(fetch_data(3, 'data2'))
task3 = asyncio.create_task(fetch_data(1, 'data3'))

await task1
await task2
await task3

asyncio.run(main())

توضیحات:
- تابع غیرهمزمان (async function): توابعی که با کلمه کلیدی async تعریف می‌شوند و می‌توانند با استفاده از await متوقف شده و بعداً از سر گرفته شوند. در اینجا، fetch_data یک تابع غیرهمزمان است که داده‌ها را با تأخیر مشخص شده شبیه‌سازی می‌کند.


    async def fetch_data(delay, name):
print(f"Start fetching {name}")
await asyncio.sleep(delay)
print(f"Finished fetching {name}")

- ایجاد و اجرای وظایف (tasks): با استفاده از asyncio.create_task می‌توانیم وظایف را ایجاد کرده و آنها را به طور همزمان اجرا کنیم. در اینجا، سه وظیفه ایجاد می‌کنیم که به ترتیب با تأخیرهای 2، 3 و 1 ثانیه اجرا می‌شوند.


    async def main():
task1 = asyncio.create_task(fetch_data(2, 'data1'))
task2 = asyncio.create_task(fetch_data(3, 'data2'))
task3 = asyncio.create_task(fetch_data(1, 'data3'))

await task1
await task2
await task3

- اجرای برنامه: با استفاده از asyncio.run تابع اصلی main را اجرا می‌کنیم.


    asyncio.run(main())

نکات:

- استفاده از async و await: برای تعریف و اجرای توابع غیرهمزمان.
- مدیریت وظایف: استفاده از asyncio.create_task برای ایجاد و مدیریت وظایف مختلف.
- زمانبندی وظایف: با استفاده از asyncio.sleep می‌توانیم وظایف را به صورت زمانبندی شده اجرا کنیم.
- توجه به تداخل وظایف: از آنجایی که وظایف به صورت همزمان اجرا می‌شوند، باید به تداخل احتمالی بین وظایف توجه کنید و در صورت نیاز از مکانیزم‌های همزمانی (synchronization) استفاده کنید.

[این لینک کانالمونه]

#پایتون #آموزش_پایتون #برنامه_نویسی #برنامه_نویسی_غیرهمزمان #توسعه_نرم_افزار #Asyncio
👍1