NINJA_LEARN_IR Telegram 761
آیا پایتون همیشه کنده؟ 🐢

چیزی که همیشه از زبون همه ی برنامه نویسا می‌شنویم (مخصوصا جامعه محترم C#) اینه که پایتون خیلی کنده (نسبت به زبان های دیگه هرچند این مقایسه اشتباهه بعضی جاها)
خب اره، درسته پایتون کنده (البته در حالت pure)
توی این پست میخوام بگم که چرا کنده و چجوری میشه سریعش کرد؟

چرا پایتون کنده ؟ 🤓

همونجور که میدونید پایتون به صورت پیش‌فرض با CPython اجرا می‌شه، که یه مفسر (interpreter) برای پایتونه و با زبان C نوشته شده. CPython کد پایتون رو به بایت‌کد (bytecode) تبدیل می‌کنه و بعد اون رو تو یه ماشین مجازی (VM) اجرا می‌کنه. این فرایند باعث می‌شه پایتون نسبت به زبان‌های کامپایل‌شده مثل C یا Rust کندتر باشه، چون
تفسیر خط‌به‌خط انجام میده و به جای کامپایل مستقیم به کد ماشین، پایتون تو زمان اجرا تفسیر می‌شه.
GIL (Global Interpreter Lock) تو CPython، یه قفل سراسری هست که جلوی اجرای چند نخ (thread) همزمان رو می‌گیره و برای کارهای multithreading مشکل‌ساز می‌شه.
داینامیک تایپ بودن پایتون تایپ‌ها رو تو زمان اجرا چک می‌کنه، که یه کم سرعت رو پایین میاره.

ولی خبر خوب اینه که پایتون راه ها و ابزارهایی داره که می‌تونن این کندی رو برطرف کنن و پرفورمنس رو حسابی بالا ببرن

راه ها و ابزارهایی برای افزایش سرعت 📚

1️⃣ PyPy 🌟
‏Pypy یه مفسر جایگزین برای پایتونه که از JIT (Just-In-Time Compilation) استفاده می‌کنه.
و کارکردش اینجوریه که کد پایتون رو به جای تفسیر ساده، تو زمان اجرا به کد ماشین کامپایل می‌کنه. این یعنی برای حلقه‌ها و عملیات تکراری خیلی سریع‌تره.
مزیتشم اینه تو بعضی موارد تا ۷ برابر سریع‌تر از CPython عمل می‌کنه
و باید توجه داشت باشید برای کدهایی که با C extensionها (مثل NumPy) کار می‌کنن، کامل سازگار نیست.

2️⃣ Cython
‏Cython یه ابزار که کد پایتون رو به C تبدیل می‌کنه و بعد کامپایلش می‌کنه.
اینجوری کار میکنه که می‌تونی تایپ‌های استاتیک (مثل int یا float) به متغیرها‏ اضافه کنی تا سرعتش بیشتر بشه. بعد Cython این کد رو به C تبدیل می‌کنه و یه فایل باینری سریع تحویلت می‌ده.
و تا چندین برابر سریع‌تر از CPython می‌شه، به‌خصوص برای محاسبات سنگین.

3️⃣ Numba 🔥
‏Numba یه کامپایلر JIT برای پایتونه که با دکوریتور @jit کار می‌کنه.
کارکردش اینجوریه که کد پایتون رو تو زمان اجرا به کد ماشین تبدیل می‌کنه، بدون نیاز به تغییر زیاد تو کدنویسی.
برای حلقه‌ها و محاسبات عددی (مثل کار با آرایه‌ها) تا ۱۰۰ برابر سریع‌تر می‌شه

4️⃣ CPython با C Extensions 🛠️
می‌تونی بخش‌های کند پروژت یا جاهایی که به سرعت بالا نیاز داری رو با C بنویسی و به CPython وصل کنی.
اینجوریه که کد C رو به صورت ماژول می‌سازی و تو پایتون لودش می‌کنی.
و سرعت C رو با سادگی پایتون ترکیب می‌کنی. کتابخونه‌هایی مثل NumPy و Pandas از این روش استفاده می‌کنن.

و در اخر پایتون همیشه کند نیست 🙃

حقیقت اینه که پایتون به تنهایی برای خیلی از کارها به اندازه کافی سریعه، به‌خصوص تو پروژه‌هایی که I/O (مثل شبکه یا دیتابیس) گلوگاه اصلیه، نه CPU. ولی وقتی پای محاسبات سنگین وسط میاد، ابزارهایی مثل PyPy، Cython و Numba می‌تونن پرفورمنس رو چند برابر کنن. مثلاً:
یه حلقه ساده با Numba می‌تونه از ۵ ثانیه به ۰.۰۵ ثانیه برسه
‏PyPy تو برنامه‌های واقعی تا ۷ برابر سرعت رو بالا برده. 🐆

#️⃣ #python


🥷 CHANNEL | GROUP
👌93👍2🔥2



tgoop.com/ninja_learn_ir/761
Create:
Last Update:

آیا پایتون همیشه کنده؟ 🐢

چیزی که همیشه از زبون همه ی برنامه نویسا می‌شنویم (مخصوصا جامعه محترم C#) اینه که پایتون خیلی کنده (نسبت به زبان های دیگه هرچند این مقایسه اشتباهه بعضی جاها)
خب اره، درسته پایتون کنده (البته در حالت pure)
توی این پست میخوام بگم که چرا کنده و چجوری میشه سریعش کرد؟

چرا پایتون کنده ؟ 🤓

همونجور که میدونید پایتون به صورت پیش‌فرض با CPython اجرا می‌شه، که یه مفسر (interpreter) برای پایتونه و با زبان C نوشته شده. CPython کد پایتون رو به بایت‌کد (bytecode) تبدیل می‌کنه و بعد اون رو تو یه ماشین مجازی (VM) اجرا می‌کنه. این فرایند باعث می‌شه پایتون نسبت به زبان‌های کامپایل‌شده مثل C یا Rust کندتر باشه، چون
تفسیر خط‌به‌خط انجام میده و به جای کامپایل مستقیم به کد ماشین، پایتون تو زمان اجرا تفسیر می‌شه.
GIL (Global Interpreter Lock) تو CPython، یه قفل سراسری هست که جلوی اجرای چند نخ (thread) همزمان رو می‌گیره و برای کارهای multithreading مشکل‌ساز می‌شه.
داینامیک تایپ بودن پایتون تایپ‌ها رو تو زمان اجرا چک می‌کنه، که یه کم سرعت رو پایین میاره.

ولی خبر خوب اینه که پایتون راه ها و ابزارهایی داره که می‌تونن این کندی رو برطرف کنن و پرفورمنس رو حسابی بالا ببرن

راه ها و ابزارهایی برای افزایش سرعت 📚

1️⃣ PyPy 🌟
‏Pypy یه مفسر جایگزین برای پایتونه که از JIT (Just-In-Time Compilation) استفاده می‌کنه.
و کارکردش اینجوریه که کد پایتون رو به جای تفسیر ساده، تو زمان اجرا به کد ماشین کامپایل می‌کنه. این یعنی برای حلقه‌ها و عملیات تکراری خیلی سریع‌تره.
مزیتشم اینه تو بعضی موارد تا ۷ برابر سریع‌تر از CPython عمل می‌کنه
و باید توجه داشت باشید برای کدهایی که با C extensionها (مثل NumPy) کار می‌کنن، کامل سازگار نیست.

2️⃣ Cython
‏Cython یه ابزار که کد پایتون رو به C تبدیل می‌کنه و بعد کامپایلش می‌کنه.
اینجوری کار میکنه که می‌تونی تایپ‌های استاتیک (مثل int یا float) به متغیرها‏ اضافه کنی تا سرعتش بیشتر بشه. بعد Cython این کد رو به C تبدیل می‌کنه و یه فایل باینری سریع تحویلت می‌ده.
و تا چندین برابر سریع‌تر از CPython می‌شه، به‌خصوص برای محاسبات سنگین.

3️⃣ Numba 🔥
‏Numba یه کامپایلر JIT برای پایتونه که با دکوریتور @jit کار می‌کنه.
کارکردش اینجوریه که کد پایتون رو تو زمان اجرا به کد ماشین تبدیل می‌کنه، بدون نیاز به تغییر زیاد تو کدنویسی.
برای حلقه‌ها و محاسبات عددی (مثل کار با آرایه‌ها) تا ۱۰۰ برابر سریع‌تر می‌شه

4️⃣ CPython با C Extensions 🛠️
می‌تونی بخش‌های کند پروژت یا جاهایی که به سرعت بالا نیاز داری رو با C بنویسی و به CPython وصل کنی.
اینجوریه که کد C رو به صورت ماژول می‌سازی و تو پایتون لودش می‌کنی.
و سرعت C رو با سادگی پایتون ترکیب می‌کنی. کتابخونه‌هایی مثل NumPy و Pandas از این روش استفاده می‌کنن.

و در اخر پایتون همیشه کند نیست 🙃

حقیقت اینه که پایتون به تنهایی برای خیلی از کارها به اندازه کافی سریعه، به‌خصوص تو پروژه‌هایی که I/O (مثل شبکه یا دیتابیس) گلوگاه اصلیه، نه CPU. ولی وقتی پای محاسبات سنگین وسط میاد، ابزارهایی مثل PyPy، Cython و Numba می‌تونن پرفورمنس رو چند برابر کنن. مثلاً:
یه حلقه ساده با Numba می‌تونه از ۵ ثانیه به ۰.۰۵ ثانیه برسه
‏PyPy تو برنامه‌های واقعی تا ۷ برابر سرعت رو بالا برده. 🐆

#️⃣ #python


🥷 CHANNEL | GROUP

BY Ninja Learn | نینجا لرن


Share with your friend now:
tgoop.com/ninja_learn_ir/761

View MORE
Open in Telegram


Telegram News

Date: |

bank east asia october 20 kowloon Telegram channels fall into two types: More>> The group also hosted discussions on committing arson, Judge Hui said, including setting roadblocks on fire, hurling petrol bombs at police stations and teaching people to make such weapons. The conversation linked to arson went on for two to three months, Hui said. Ng was convicted in April for conspiracy to incite a riot, public nuisance, arson, criminal damage, manufacturing of explosives, administering poison and wounding with intent to do grievous bodily harm between October 2019 and June 2020.
from us


Telegram Ninja Learn | نینجا لرن
FROM American