این مقاله رو هر برنامه نویسی باید بخونه و بلد باشه
برنامه نویسی همزمان
برنامهنویسی همزمان یا همان Concurrency یکی از جذابترین و البته حیاتیترین مفهوم تو دنیای برنامه نویسیه که واقعا دید و کارایی خیلی خوبی بهمون میده
◀️ برای درک این مفهوم به نظرم یه مثال از زندگی روزمره خودمون کافیه و تماما جا میوفته براتون:
◀️ یک مثال عملی و واقعی:
◀️ یه مثال بزنیم براش:
◀️ خروجی:
◀️ توضیحات:
◀️ نکته: برای تلف کردن تایم در تابع تسک اول ما اومدیم از async time استفاده کردیم و با ماژول time خود پایتون نمیشه چون asyncable نیست خود ماژول
اونیم که میگفت منتظر میمونم باید بگم که کارش غیر همزمان محسوب میشه و نیازی به همزمان کردن کد نداره حتما شخص بیکاره دیگه میتونه برسه با کاراش🤷♂️
#python #learn
☕️ Telegram | Website | Discord
برنامه نویسی همزمان
برنامهنویسی همزمان یا همان Concurrency یکی از جذابترین و البته حیاتیترین مفهوم تو دنیای برنامه نویسیه که واقعا دید و کارایی خیلی خوبی بهمون میده
تصور کنید در حال آشپزی کردنید, پیازها رو خورد میکنید و توی ماهیتابه میریزین یعنی تا وقتی که پیازها سرخ بشن, دست به سینه جلوی گاز همینجوری میمونید؟ قطعاً نه (هر کسیم که بگه آره منتظر میمونم اونو توی اخر مقاله توی یه نکته میگم) با این حال تو همون چند دقیقه ای که پیازا در حال تفت خوردنن شما به سراغ شستن ظرفها یا خرد کردن گوجهفرنگیها میرین و خودتون رو به یه کار مشخص دیگه ای مصروف میکنید.
این دقیقاً همون کاریه که برنامهنویسی همزمان انجام میده
یعنی مدیریت و پیشبردن چند کار مختلف در یک بازه زمانی، بدون اینکه منتظر تموم شدن کار قبلی بمونیم در دنیای سنتی برنامهنویسی، همه چیز خط به خط و پشت سر هم اجرا میشه. مثلا اگه برنامتون قرار بود فایلی رو از اینترنت دانلود کنه کل برنامه منتظر میموند تا دانلود تموم بشه و واقعا هم تایم هدر میرفت و هم خسته کننده و رو مخ بود
ولی در برنامهنویسی همزمان، مشکلمون حل میشه هسته اصلی این ایده، استفاده بهینه از زمانهای مردست. وقتی یک بخش از برنامه منتظر پاسخ سرور، دریافت یک فایل یا خواندن اطلاعات از هارد دیسکه پردازنده معطل نمیمونه بلکه سریعاً به سراغ اجرای بخش بعدی از برنامه میره که آماده کاره. به این ترتیب، سرعت ظاهری و پاسخگویی سیستم به شدت بالا میره بدون اینکه لزوماً نیاز به سختافزار قویتری داشته باشیم
سیستم چت آنلاین یا همون رباتهای پیامرسان فرض کن هزار نفر همزمان به یه ربات مدیریت گروه پیام میدن. اگر برنامه همزمان نباشه ربات باید پیام نفر اولو بگیره پردازش کنه پاسخ بده و بعد که تموم شد سراغ نفر بعدی بره. نیعنی اینجوری باید نفر هزارم اینقدر منتظر بمونه تا کار اینا تموم بشه ولی با برنامهنویسی همزمان، ربات پیام نفر اول رو دریافت میکنه و در همان کسری از ثانیهای که منتظر تایید سرور برا ارسال پاسخه پیامهای نفرات بعدی رو هم تحویل میگیره. در واقع کارها به موازات هم جلو میرن و هیچکس در صف طولانی معطل نمیشه
ما این کار رو توی پایتون با دوتا کلمه کلیدی async و await انجام میدیم و ماژول بیلت این asyncio که در خود پایتون موجوده و نیازی به نصب نیست
پایتون به طور پیشفرض کد هارو خط به خط میخونه ولی این ماژول رفتارش رو تغییر میده و استفاده از تایم رو بهش یاد میده و مثل یک موتور عمل میکنه
import asyncio
async def task1():
await asyncio.sleep(2)
print(1)
async def task2():
print(2)
async def task3():
print(3)
async def main():
await asyncio.gather(task1(), task2(), task3())
asyncio.run(main())
2
3
1
کدمون اگه غیر همزمان بود به تابع task1 میرسید و یه sleep میخورد و تا اون مکثه تموم نمیشد هیچ جوره نمیرفت خط بعدی ولی الان که کدمون همزمانه میاد و به همون تابع میرسه و میبینه که کارش طول میکشه میره بعدیارو اجرا میکنه و بعد هر موقع که کارش تموم شد کارش تسک اولم اجرا میشه
اونیم که میگفت منتظر میمونم باید بگم که کارش غیر همزمان محسوب میشه و نیازی به همزمان کردن کد نداره حتما شخص بیکاره دیگه میتونه برسه با کاراش
#python #learn
☕️ Telegram | Website | Discord
Please open Telegram to view this post
VIEW IN TELEGRAM
10❤🔥16🔥3⚡1👏1