این داستان Pypy 🐉
PyPy ابزاری قدرتمند برای برنامهنویسهای پایتونه که به دنبال بهبود پرفورمنس کدهای خودشون هستن. اگه با کندی اجرای کد تو پروژههاتون مواجه شدین یا میخواین بدونین چطور میشه سرعت پایتون رو بدون تغییر زیاد تو کد بالا برد، این پست برای شماست. اینجا قراره بررسی کنیم PyPy چیه، چه قابلیتهایی داره، کجا به کار میاد و چه محدودیتهایی داره.
🧠اول از همه PyPy چیه؟
PyPy یه مفسر (interpreter) جایگزین برای پایتونه که به جای CPython (مفسر استاندارد پایتون که با C نوشته شده) استفاده میشه. PyPy خودش با پایتون (به طور دقیقتر، یه زیرمجموعه به اسم RPython) پیادهسازی شده و از Just-In-Time Compilation (JIT) برای کامپایل کردن کد پایتون به کد ماشین تو زمان اجرا استفاده میکنه. این باعث میشه تو خیلی از سناریوها سرعتش به مراتب از CPython بیشتر باشه.
شروع این پروژه به سال ۲۰۰۲ برمیگرده و حالا یه پروژه متنباز با جامعهای فعاله که مدام در حال بهبودشه. هدف PyPy اینه که کدهای پایتون رو سریعتر، بهینهتر و بدون نیاز به تغییر زیاد تو ساختار کد اجرا کنه.
📚 قابلیتهای مهم PyPy
PyPy چندتا ویژگی اصلی داره که اون رو از CPython متمایز میکنه:
1⃣ سرعت بالا با JIT Compilation
PyPy به جای تفسیر خطبهخط کد (مثل CPython)، بخشهای پرتکرار کد رو به کد ماشین کامپایل میکنه. این یعنی برای حلقهها و عملیات تکراری، سرعتش خیلی بیشتره.
مثال: یه تابع ساده برای محاسبه فیبوناچی:
تو CPython این کد برای
2⃣ سازگاری بالا با پایتون
PyPy سعی میکنه تا حد زیادی با استانداردهای CPython سازگار باشه، یعنی اکثر کدهای پایتون بدون تغییر روی PyPy اجرا میشن.
مثلا اگه یه اسکریپت با Python 3.8 روی CPython کار کنه، به احتمال زیاد روی PyPy هم بدون دردسر اجرا میشه مگر از کتابخانه هایی استفاده کرده باشید که C extension استفاده میکنه.
3⃣ مصرف حافظه بهینه
PyPy یه Garbage Collector پیشرفته داره که میتونه مصرف حافظه رو تو بعضی سناریوها بهینهتر از CPython کنه.
کاربردشم تو برنامههایی که مدت طولانی اجرا میشن (مثل وبسرورها) و نیاز به مدیریت خوب حافظه دارن.
4⃣پشتیبانی از Stackless Python
PyPy از قابلیتهای Stackless Python (مثل micro-threads یا taskletها) پشتیبانی میکنه که برای برنامههای concurrent مناسبن.
🔍 چرا PyPy مناسبه؟
PyPy تو موقعیتهایی که پرفورمنس کد حیاتیه، میتونه بازی رو عوض کنه:
سرعت:
تو بنچمارکهای مختلف، PyPy برای کدهای محاسباتی (مثل حلقهها و الگوریتمهای ریاضی) تا ۷ برابر سریعتر از CPython عمل کرده.
بدون نیاز به بازنویسی کد: برخلاف ابزارهایی مثل Cython که نیاز به تغییر کد دارن، PyPy فقط با تغییر مفسر کار میکنه.
متنباز و فعال:
جامعه PyPy مدام داره باگها رو فیکس میکنه و پشتیبانی از نسخههای جدید پایتون رو اضافه میکنه.
🛠 کجا PyPy به کار میاد؟
1⃣ محاسبات سنگین:
اگه پروژهتون پر از حلقههای پیچیده یا الگوریتمهای محاسباتیه (مثل پردازش داده یا شبیهسازی)، PyPy سرعت رو حسابی بالا میبره.
2⃣ وبسرورها:
برای وباپلیکیشنهایی که با فریمورکهایی مثل Flask یا Django کار میکنن، PyPy میتونه پاسخگویی رو بهتر کنه.
3⃣ اسکریپتهای طولانیمدت: برنامههایی که مدت زیادی اجرا میشن (مثل دیمنها یا سرویسها) از بهینهسازی حافظه PyPy سود میبرن.
📚 محدودیتهای PyPy
هرچند PyPy عالیه، ولی محدودیتهایی هم داره:
1⃣ عدم پشتیبانی کامل از C Extensions:
خیلی از کتابخونههای پایتون (مثل NumPy، Pandas یا TensorFlow) از C Extensionها استفاده میکنن که تو PyPy ممکنه کندتر باشن یا کار نکنن. البته PyPy داره روی این موضوع کار میکنه.
2⃣ سربار اولیه JIT:
PyPy تو شروع اجرا یه کم کندتره چون باید کد رو کامپایل کنه. برای اسکریپتهای کوتاه این میتونه نقطهضعف باشه.
3⃣ مصرف حافظه اولیه:
PyPy گاهی تو شروع کار حافظه بیشتری نسبت به CPython مصرف میکنه.
✍ جمعبندی
PyPy یه ابزار قدرتمنده که میتونه کدهای پایتون شما رو بدون نیاز به بازنویسی، سریعتر و بهینهتر اجرا کنه. با استفاده از JIT Compilation، این مفسر برای پروژههای محاسباتی، وباپلیکیشنها و اسکریپتهای طولانیمدت یه انتخاب عالیه. هرچند محدودیتهایی مثل سازگاری با C Extensionها داره، ولی برای خیلی از سناریوها میتونه پرفورمنس رو چند برابر کنه.
➖➖➖➖➖➖➖➖➖➖
PyPy ابزاری قدرتمند برای برنامهنویسهای پایتونه که به دنبال بهبود پرفورمنس کدهای خودشون هستن. اگه با کندی اجرای کد تو پروژههاتون مواجه شدین یا میخواین بدونین چطور میشه سرعت پایتون رو بدون تغییر زیاد تو کد بالا برد، این پست برای شماست. اینجا قراره بررسی کنیم PyPy چیه، چه قابلیتهایی داره، کجا به کار میاد و چه محدودیتهایی داره.
🧠اول از همه PyPy چیه؟
PyPy یه مفسر (interpreter) جایگزین برای پایتونه که به جای CPython (مفسر استاندارد پایتون که با C نوشته شده) استفاده میشه. PyPy خودش با پایتون (به طور دقیقتر، یه زیرمجموعه به اسم RPython) پیادهسازی شده و از Just-In-Time Compilation (JIT) برای کامپایل کردن کد پایتون به کد ماشین تو زمان اجرا استفاده میکنه. این باعث میشه تو خیلی از سناریوها سرعتش به مراتب از CPython بیشتر باشه.
شروع این پروژه به سال ۲۰۰۲ برمیگرده و حالا یه پروژه متنباز با جامعهای فعاله که مدام در حال بهبودشه. هدف PyPy اینه که کدهای پایتون رو سریعتر، بهینهتر و بدون نیاز به تغییر زیاد تو ساختار کد اجرا کنه.
📚 قابلیتهای مهم PyPy
PyPy چندتا ویژگی اصلی داره که اون رو از CPython متمایز میکنه:
1⃣ سرعت بالا با JIT Compilation
PyPy به جای تفسیر خطبهخط کد (مثل CPython)، بخشهای پرتکرار کد رو به کد ماشین کامپایل میکنه. این یعنی برای حلقهها و عملیات تکراری، سرعتش خیلی بیشتره.
مثال: یه تابع ساده برای محاسبه فیبوناچی:
def fib(n):
if n <= 1:
return n
return fib(n-1) + fib(n-2)
print(fib(35))
تو CPython این کد برای
n=35
ممکنه چند ثانیه طول بکشه، ولی تو PyPy به لطف JIT خیلی سریعتره (گاهی تا ۷ برابر).2⃣ سازگاری بالا با پایتون
PyPy سعی میکنه تا حد زیادی با استانداردهای CPython سازگار باشه، یعنی اکثر کدهای پایتون بدون تغییر روی PyPy اجرا میشن.
مثلا اگه یه اسکریپت با Python 3.8 روی CPython کار کنه، به احتمال زیاد روی PyPy هم بدون دردسر اجرا میشه مگر از کتابخانه هایی استفاده کرده باشید که C extension استفاده میکنه.
3⃣ مصرف حافظه بهینه
PyPy یه Garbage Collector پیشرفته داره که میتونه مصرف حافظه رو تو بعضی سناریوها بهینهتر از CPython کنه.
کاربردشم تو برنامههایی که مدت طولانی اجرا میشن (مثل وبسرورها) و نیاز به مدیریت خوب حافظه دارن.
4⃣پشتیبانی از Stackless Python
PyPy از قابلیتهای Stackless Python (مثل micro-threads یا taskletها) پشتیبانی میکنه که برای برنامههای concurrent مناسبن.
🔍 چرا PyPy مناسبه؟
PyPy تو موقعیتهایی که پرفورمنس کد حیاتیه، میتونه بازی رو عوض کنه:
سرعت:
تو بنچمارکهای مختلف، PyPy برای کدهای محاسباتی (مثل حلقهها و الگوریتمهای ریاضی) تا ۷ برابر سریعتر از CPython عمل کرده.
بدون نیاز به بازنویسی کد: برخلاف ابزارهایی مثل Cython که نیاز به تغییر کد دارن، PyPy فقط با تغییر مفسر کار میکنه.
متنباز و فعال:
جامعه PyPy مدام داره باگها رو فیکس میکنه و پشتیبانی از نسخههای جدید پایتون رو اضافه میکنه.
🛠 کجا PyPy به کار میاد؟
1⃣ محاسبات سنگین:
اگه پروژهتون پر از حلقههای پیچیده یا الگوریتمهای محاسباتیه (مثل پردازش داده یا شبیهسازی)، PyPy سرعت رو حسابی بالا میبره.
2⃣ وبسرورها:
برای وباپلیکیشنهایی که با فریمورکهایی مثل Flask یا Django کار میکنن، PyPy میتونه پاسخگویی رو بهتر کنه.
3⃣ اسکریپتهای طولانیمدت: برنامههایی که مدت زیادی اجرا میشن (مثل دیمنها یا سرویسها) از بهینهسازی حافظه PyPy سود میبرن.
📚 محدودیتهای PyPy
هرچند PyPy عالیه، ولی محدودیتهایی هم داره:
1⃣ عدم پشتیبانی کامل از C Extensions:
خیلی از کتابخونههای پایتون (مثل NumPy، Pandas یا TensorFlow) از C Extensionها استفاده میکنن که تو PyPy ممکنه کندتر باشن یا کار نکنن. البته PyPy داره روی این موضوع کار میکنه.
2⃣ سربار اولیه JIT:
PyPy تو شروع اجرا یه کم کندتره چون باید کد رو کامپایل کنه. برای اسکریپتهای کوتاه این میتونه نقطهضعف باشه.
3⃣ مصرف حافظه اولیه:
PyPy گاهی تو شروع کار حافظه بیشتری نسبت به CPython مصرف میکنه.
✍ جمعبندی
PyPy یه ابزار قدرتمنده که میتونه کدهای پایتون شما رو بدون نیاز به بازنویسی، سریعتر و بهینهتر اجرا کنه. با استفاده از JIT Compilation، این مفسر برای پروژههای محاسباتی، وباپلیکیشنها و اسکریپتهای طولانیمدت یه انتخاب عالیه. هرچند محدودیتهایی مثل سازگاری با C Extensionها داره، ولی برای خیلی از سناریوها میتونه پرفورمنس رو چند برابر کنه.
#️⃣ #web #programming
➖➖➖➖➖➖➖➖➖➖
🥷🏻 CHANNEL | GROUP
❤10
Forwarded from Linuxor ?
توی ماشین لرنینگ برای اینکه بفهمیم هرکدوم از ویژگی ها چقدر توی خروجی تاثیر داشته راه های مختلفی وجود داره با SHAP میتونید راحت این کارو انجام بدید، SHAP یه روش برای توضیح خروجی مدلهای یادگیری ماشینه که از مفهوم Shapley value در نظریه بازیها الهام گرفته. توی نظریه بازی، Shapley value منصفانه مشخص میکنه هر بازیکن چقدر در نتیجهی تیم سهم داشته؛ SHAP همین ایده رو برای ویژگیهای داده به کار میگیره. یعنی برای هر پیشبینی مشخص، حساب میکنه هر فیچر (مثل سن، درآمد یا سابقه خرید) چه میزان در نتیجه نهایی مدل نقش مثبت یا منفی داشته. اینطوری میشه دقیق فهمید که چرا مدل به یه تصمیم خاص رسیده.
shap.readthedocs.io
@Linuxor
shap.readthedocs.io
@Linuxor
👍9
بدون اینکه مستقیم اشاره کنید بگید با چه زبان برنامهنویسی کار میکنید 🙂↔️
❤7
Forwarded from 👾 Geek Engineers ([ Taha. Dostifam ])
این هم از زبان برنامه نویسی Cyrus که ما موفق به ساختش شدیم.
قدیمیای کانال از روند توسعه ش خبر دارن :)
منتها حقیقتا راه دور و درازی در پیش داریم که توسعه کامپایلر مصیبت های خودشو داره. منتها با کمک و همراهی شما دوستان پیشرفت خیلی زیادی داشتیم و امیدواریم که از پس جبران حمایت های شما بر بیایم.
در حال حاضر داریم type system رو تست میکنیم تا اینکه تا حدی stable بشه. هر موقع استیبل بشه به ادامه دولوپ فیچر های high level مثل error handling و macro ها و generic type ها خواهیم پرداخت انشالله.
#cyrus
@cyrus_lang
https://github.com/cyrus-lang/Cyrus
قدیمیای کانال از روند توسعه ش خبر دارن :)
منتها حقیقتا راه دور و درازی در پیش داریم که توسعه کامپایلر مصیبت های خودشو داره. منتها با کمک و همراهی شما دوستان پیشرفت خیلی زیادی داشتیم و امیدواریم که از پس جبران حمایت های شما بر بیایم.
در حال حاضر داریم type system رو تست میکنیم تا اینکه تا حدی stable بشه. هر موقع استیبل بشه به ادامه دولوپ فیچر های high level مثل error handling و macro ها و generic type ها خواهیم پرداخت انشالله.
#cyrus
@cyrus_lang
https://github.com/cyrus-lang/Cyrus
👏16❤3🔥1
👾 Geek Engineers
این هم از زبان برنامه نویسی Cyrus که ما موفق به ساختش شدیم. قدیمیای کانال از روند توسعه ش خبر دارن :) منتها حقیقتا راه دور و درازی در پیش داریم که توسعه کامپایلر مصیبت های خودشو داره. منتها با کمک و همراهی شما دوستان پیشرفت خیلی زیادی داشتیم و امیدواریم…
بالاخره یه زبان درست حسابی که یه ایرانی ساختتش خلق شد
👌9❤1
👾 Geek Engineers
این هم از زبان برنامه نویسی Cyrus که ما موفق به ساختش شدیم. قدیمیای کانال از روند توسعه ش خبر دارن :) منتها حقیقتا راه دور و درازی در پیش داریم که توسعه کامپایلر مصیبت های خودشو داره. منتها با کمک و همراهی شما دوستان پیشرفت خیلی زیادی داشتیم و امیدواریم…
تو فکر این رفتم منم یه حرکتایی بزنم برای کامیونیتی ایران
نظری یا ایده ای دارید ؟ 🤔
نظری یا ایده ای دارید ؟ 🤔
👍9