tgoop.com/pyHints/137
Last Update:
بعد از این پست، چندتا دوره آموزش
Async programming
برام فرستادید، بعضی موارد حتی از طرف افراد معروفی هست که متأسفانه وقتی ۱-۲ مورد رو نگاه کردم متوجه شدم کلاهبرداری هست
من بهترین منبع رو توی کانال گذاشتم : کتابی که بالاتر هست.
اما برای اینکه متوجه بشید دوره درست هست یا خیر؛
به زبان ساده :
ما بطور کلی ۲ نوع مشکل میتونیم داشته باشیم که کدهامون سرعت اجرا کندی داشته باشند :
۱- CPU bound
۲- I/O bound
مورد اول : وقتایی هست که شما پردازش خیلی زیادی داری، کد معطل خوندن دیتا از هارد، یاد دانلود دیتا و ... نیست و فقط و فقط خود پردازش کردن دادهها هست که داره زمان زیادی میگیره، به فرض اینکه کد بخوبی زده شده و تا حد خوبی اپتیمایز شده برای این نوع مسائل باید برید سراغ کتابخانه:
multiprocessing
مورد دوم : غیر از بچههای
Data science, data engineering
اکثر مواقع شما مشکلی که دارید روی این بخش هست، همونطور که میدونید پردازش CPU بسیار سریعتر از بخشهای
I/O : Input / Output
هست، یعنی شما توی کسری از ثانیه محاسبات رو روی ۱ هسته از CPU های لپتاپ یا سیستمتون انجام میدید ولی خوندن دیتا از هارد، رم یا حتی وقتی دارید
Crawler
مینویسید دانلود اون صفحه توسط پکیج requests هست که خیلی زمانبر هست نه پیدا کردن چندتا تگ توی html اون صفحه؛ هرچیزی غیر از CPU بمحض درگیر شدن کدهارو
I/O bound
میکنه، ولی خب به نسبت پردازش بهش نگاه میکنیم اگر از پردازش وقت بیشتری بگیره کدهای شما
I/O Blocking
هستند اگر از پردازش وقت کمتری بگیره کدهای شما
CPU Blocking
برای همین خیلی وقتا
Multiprocessing, Multithreading
توی پایتون، بهبود سرعتی که نمیده هیچ اجرا رو کندتر هم میکنه (این چیزی هست که زیاد میشنوم و میفهمم طرفم حتی مفاهیم ساده علوم کامپیوتر رو هم نمیدونه و خودش رو برنامهنویس میدونه)
برای تسکهای I/O blocking باید از
asyncio
استفاده کنید، اما صرف نوشتن
async, await
هیچ اتفاقی نمیوفته (اینو میلیاردها بار توی کدهای fastApi
میبینید) await اصلا از خود کلمهاش مشخص هست (من همیشه اینطوری درس میدادم)
A wait
ی ذره صبر کنیم تا جواب این خط کد بیاد بعد ادامه میدیم، و همینجوری کیلویی استفاده کردنش هیچ کمکی نمیکنه
از طرف دیگه کتابخونهای که توی پروژه
Async
استفاده میشه هم مهم هست، مثلاً برای ارسال درخواست روی web دیگه نمیتونید از requests استفاده کنید باید اون کتابخونه هم async رو پشتیبانی کنه مثلاً بعنوان جایگزین
HttpX, aiohttp
با این مطلب میتونید خیلی وقتا متوجه بشید ی دوره آموزش
asyncio
کلاهبرداری هست یا واقعی (چون خیلی از آدمهای بسیار معروف توی دنیای پایتون رو دیدم، که asyncio رو اشتباه تدریس میکنند.)
ولی بازم منبع اصلی کتابی هست که آخر پیامهای پین شده گذاشتم برای
Async
BY Python Hints
Share with your friend now:
tgoop.com/pyHints/137