Ninja Learn | نینجا لرن
یه پست بعدا راجبش میسازم که چرا دردسر سازه و چجوری میشه دورش زد :)
خب همونجور که میدونید درمورد GIL یا همون Global Interpreter Lock بحث زیاده 🤯
مشکل ما با GIL چیه؟
اینه که نمیذاره مولتیتردینگ واقعی داشته باشیم.
یعنی چی؟
یعنی نمیتونیم چندتا تسک رو همزمان روی چندتا ترد اجرا کنیم.
چرا؟
چون GIL میگه:
«در هر لحظه فقط یه ترد حق داره اجرا بشه، بقیه باید وایسن نوبتشون بشه.»
حالا نکته بامزه اینجاست:
اگه بیای چندتا ترد ران کنی، این تردا میان سر GIL دعوا میکنن کلی context switching میخوره latency میره بالا یه عالمه overhead میاد رو برنامه.
نتیجه؟ مولتیتردینگ برای کارای CPU-bound نه تنها کمک نمیکنه، بدترم میکنه برای همین باید single-thread باشه 😅
(احتمالاً خودتونم وقتی async برای CPU-bound نوشتید دیدید چه وضعیه.)
حالا چرا اصلاً GIL وجود داره؟
سؤال خوبیه 👌
خیلی خلاصه بگم نذاشته پایتون به چوخ بره 😂
چطوری؟
میاد thread safety رو برات تضمین میکنه، نمیذاره race condition بیاد وسط و همه چی بترکه.
ولی خب GIL دردسرم کم درست نمیکنه:
نمیذاره مولتیتردینگ CPU-bound داشته باشیم.
بعدم بخوای حذفش کنی هزاران لایبری که با درنظر گرفتن gil نوشته شده باید اپدیت بشن :)
و....
کلاً محدودمون میکنه.
راهحل چیه؟
1. C Extension
یعنی توابع سنگینت رو تو C بنویسی، اونجا اجرا بشه، فقط از پایتون صدا بزنی. اینجوری GIL رو میتونی دور بزنی.
2. Multiprocessing
این یکی مطرح ترین راهه. به تعداد core های CPU پروسس بالا میاری. هر پروسس مفسر خودش و در نتیجه GIL خودش رو داره اینجا واقعاً موازی میشه.
ولی اینجا یه توهمه که «ایول مشکل حل شد»…
سخت در اشتباهید 😅
چرا؟
چون:
ـprocess خیلی سنگینه، هر کدوم کلی overhead دارن.
ارتباط بین processها (همون IPC) خودش یه هزینهی جداست.
دادهها باید بین processها جابهجا بشن (queue، pipe، shared memory و …) که اینم کندی و مصرف حافظه میاره.
گزینه اپشنال شدن گیل هم توی ۳.۱۳ کامل گیل رو حذف نمیکنه میتونیم مولتی پراسسینگ و موازی سازی کنیم ولی خب خودشون هنوز تایید نکرده و ازمایشیه و کلی مشکلات داره.
گزینه هاییم هست مثل استفاده از nogil که خب یکسری مشکلات دارن که توی این پست جا نمیشن بگم
📌 خلاصه: GIL هم ناجیه، هم قاتل. ناجی چون امنیت میده، قاتل چون مولتیتردینگ CPU-bound رو ازمون میگیره. ولی خب این مورد توی I/O bound process نیست چون وقتی یه پراسس io ران میشه گیل خاموش میشه و میتونی parallel processing داشته باشی :)
➖➖➖➖➖➖➖➖➖➖
مشکل ما با GIL چیه؟
اینه که نمیذاره مولتیتردینگ واقعی داشته باشیم.
یعنی چی؟
یعنی نمیتونیم چندتا تسک رو همزمان روی چندتا ترد اجرا کنیم.
چرا؟
چون GIL میگه:
«در هر لحظه فقط یه ترد حق داره اجرا بشه، بقیه باید وایسن نوبتشون بشه.»
حالا نکته بامزه اینجاست:
اگه بیای چندتا ترد ران کنی، این تردا میان سر GIL دعوا میکنن کلی context switching میخوره latency میره بالا یه عالمه overhead میاد رو برنامه.
نتیجه؟ مولتیتردینگ برای کارای CPU-bound نه تنها کمک نمیکنه، بدترم میکنه برای همین باید single-thread باشه 😅
(احتمالاً خودتونم وقتی async برای CPU-bound نوشتید دیدید چه وضعیه.)
حالا چرا اصلاً GIL وجود داره؟
سؤال خوبیه 👌
خیلی خلاصه بگم نذاشته پایتون به چوخ بره 😂
چطوری؟
میاد thread safety رو برات تضمین میکنه، نمیذاره race condition بیاد وسط و همه چی بترکه.
ولی خب GIL دردسرم کم درست نمیکنه:
نمیذاره مولتیتردینگ CPU-bound داشته باشیم.
بعدم بخوای حذفش کنی هزاران لایبری که با درنظر گرفتن gil نوشته شده باید اپدیت بشن :)
و....
کلاً محدودمون میکنه.
راهحل چیه؟
1. C Extension
یعنی توابع سنگینت رو تو C بنویسی، اونجا اجرا بشه، فقط از پایتون صدا بزنی. اینجوری GIL رو میتونی دور بزنی.
2. Multiprocessing
این یکی مطرح ترین راهه. به تعداد core های CPU پروسس بالا میاری. هر پروسس مفسر خودش و در نتیجه GIL خودش رو داره اینجا واقعاً موازی میشه.
ولی اینجا یه توهمه که «ایول مشکل حل شد»…
سخت در اشتباهید 😅
چرا؟
چون:
ـprocess خیلی سنگینه، هر کدوم کلی overhead دارن.
ارتباط بین processها (همون IPC) خودش یه هزینهی جداست.
دادهها باید بین processها جابهجا بشن (queue، pipe، shared memory و …) که اینم کندی و مصرف حافظه میاره.
گزینه اپشنال شدن گیل هم توی ۳.۱۳ کامل گیل رو حذف نمیکنه میتونیم مولتی پراسسینگ و موازی سازی کنیم ولی خب خودشون هنوز تایید نکرده و ازمایشیه و کلی مشکلات داره.
گزینه هاییم هست مثل استفاده از nogil که خب یکسری مشکلات دارن که توی این پست جا نمیشن بگم
📌 خلاصه: GIL هم ناجیه، هم قاتل. ناجی چون امنیت میده، قاتل چون مولتیتردینگ CPU-bound رو ازمون میگیره. ولی خب این مورد توی I/O bound process نیست چون وقتی یه پراسس io ران میشه گیل خاموش میشه و میتونی parallel processing داشته باشی :)
#️⃣ #web #programming
➖➖➖➖➖➖➖➖➖➖
🥷🏻 CHANNEL | GROUP
❤🔥11❤2👍2
هرخارجی که ویوش کم میشه یه ویدیو درمورد ایران میسازه یا فارسی حرف میزنه ویوهاش میلیونی میشه 😂😂
ماهم بیایم یه مدت محتوای انگلیسی بزاریم یهو فارسی صحبت کنیم 🗿
Yea man this a business
ماهم بیایم یه مدت محتوای انگلیسی بزاریم یهو فارسی صحبت کنیم 🗿
Yea man this a business
🤣20
This media is not supported in your browser
VIEW IN TELEGRAM
فقط اونجایی که گفت برادر c رو زبان سطح بالا صدا زد 😂
🤣17🔥4
Ninja Learn | نینجا لرن
فقط اونجایی که گفت برادر c رو زبان سطح بالا صدا زد 😂
میتونم به جرعت بگم یکی از اشخاصیه که ۲۰۰ سال دیگه هم هوش مصنوعی نمیتونه جاشو بگیره🗿
❤10
Forwarded from LearnPOV
با اعضای تیم لرن پی او وی آشنا شید 🥇
🔗 مشاهده تیم ما
🏫 @LearnPOV | اولین شبکه اجتماعی آموزشی
توی صفحه تیم ما میتونید اعضای تیم LearnPOV آشنا بشید😉
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
LearnPOV
با اعضای تیم لرن پی او وی آشنا شید 🥇 توی صفحه تیم ما میتونید اعضای تیم LearnPOV آشنا بشید 😉 🔗 مشاهده تیم ما 🏫 @LearnPOV | اولین شبکه اجتماعی آموزشی
محمد حسین خیلی خوشحالم که بعد کلی زحمتی که کشیدی تونستی پلتفرم خفنتو بیاری بالا :)❤️
ارزوی بهترینا رو برات داریم 😉
ارزوی بهترینا رو برات داریم 😉
🔥8❤1👌1
Ninja Learn | نینجا لرن
خب همونجور که میدونید درمورد GIL یا همون Global Interpreter Lock بحث زیاده 🤯 مشکل ما با GIL چیه؟ اینه که نمیذاره مولتیتردینگ واقعی داشته باشیم. یعنی چی؟ یعنی نمیتونیم چندتا تسک رو همزمان روی چندتا ترد اجرا کنیم. چرا؟ چون GIL میگه: «در هر لحظه فقط یه ترد…
میخوام توی پست بعدی interperter رو معرفی کنم به نام nogil که یه فورک از cpython هست که ادعا میکنه گیل رو حذف کرده
و خب موفق هم شده ولی یکسری مشکلات هست که بهش میپردازیم
و خب موفق هم شده ولی یکسری مشکلات هست که بهش میپردازیم
❤1
زندگی اونجایی سخت میشه که مجبور میشی با ۲۲۲ گیگ حافظه سوروایو کنی
❤7
Ninja Learn | نینجا لرن
برام سوال شده ایرانی بودن فیچره یا باگه
بعد میگید ما خلاقیت نداریم
توی این چند وقت اونقدر چیز میز یادگرفتم که سروقت همشو بهتون یاد میدم
❤12❤🔥2
Ninja Learn | نینجا لرن
دلار ۹۰ هزار تومنی رو کجای دلمون بزاریم :) هرچند توقعشو داشتم و احتمالا تا قبل عید ۱۰۰ تومنو رد میکنه. (مردم کاری از دستشون برنمیاد)
به قول یه بنده خدایی دلمون برای همین روزا هم تنگ میشه
👍3😭2
طبیعیه وقتی قهوه میخورم انگار چیت ذهن زدم؟
(چاکراهام باز میشه انگار 😂)
(چاکراهام باز میشه انگار 😂)
👎6👍1👌1
Forwarded from LearnPOV
لرن پی او وی منتشر شد 🥳 💎
سلام رفقا، بالاخره بعد از کلی تلاش و تست، LearnPOV به صورت عمومی منتشر شد، و میتونید استفاده کنید ازش✌️
رسما از امروز برنامهنویسها یه شبکه اجتماعی اختصاصی دارن، و خوشحالیم که تونستیم این اتفاق رو در کنار تیم خوب لرن پی او وی رقم بزنیم👍
شما هم میتونید از همین لحظه تجاربتون رو به اشتراک بزارید🔥
👤 ایجاد حساب کاربری
🔍 اکسپلور
📝 ساخت پست جدید
🏫 @LearnPOV
سلام رفقا، بالاخره بعد از کلی تلاش و تست، LearnPOV به صورت عمومی منتشر شد، و میتونید استفاده کنید ازش
قبلا چندین بار راجب لرن پی او وی صحبت کردیم ولی اگر نمیدونید هنوز که چیه دقیقا میتونید توی صفحه زیر بخونید راجبش
🔗 website.learnpov.com
رسما از امروز برنامهنویسها یه شبکه اجتماعی اختصاصی دارن، و خوشحالیم که تونستیم این اتفاق رو در کنار تیم خوب لرن پی او وی رقم بزنیم
این تازه شروع راهه؛ قراره جایی بسازیم که برنامهنویسها توش رشد کنن، تجربههاشون رو به اشتراک بذارن و از همدیگه یاد بگیرن...
شما هم میتونید از همین لحظه تجاربتون رو به اشتراک بزارید
راستی میتونید نسخه PWA لرن پی او وی رو روی گوشیتون نصب کنید تا مثل اپلیکیشن های نیتیو ازش استفاده بکنید📱
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍1🔥1