
پایتون ۳.۱۴ با تغییرات بزرگ و هیجان انگیزی اومده که برنامه نویسی رو سریعتر و جذابتر میکنه! توی این مقاله، نگاهی میندازیم به دو تا از ستاره های این نسخه، یعنی حذف قفل جهانی مفسر (GIL) و کامپایلر JIT آزمایشی، و بعد چند تا از ویژگی های جذاب دیگه رو هم مرور میکنیم.
تصور کن پایتون یه آشپزخونه است با چند تا اجاق گاز (هستههای CPU). قفل جهانی مفسر (GIL) مثل یه قفل روی دره که فقط یه آشپز (نخ) میتونه تو یه لحظه کار کنه. حتی اگه ۱۶ تا هسته داشته باشی، بقیه آشپزها باید منتظر بمونن! این قفل تو CPython باعث میشد نخ ها نتونن همزمان روی هسته های مختلف کار کنن، که برای برنامه های سنگین محاسباتی (مثل پردازش داده یا یادگیری ماشین) حسابی درد سرساز بود. تو پایتون ۳.۱۴، با PEP 703 و PEP 779، این قفل رو تو حالت Free-threaded mode برداشتن تا نخ ها بتونن مثل یه تیم حرفه ای همزمان کار کنن!
اجرای موازی واقعی: حالا نخ ها میتونن روی هسته های مختلف CPU همزمان اجرا بشن. مثلاً اگه داری یه دیتاست بزرگ رو پردازش میکنی، میتونی از همه هسته های CPU استفاده کنی و سرعت کار رو چند برابر کنی.
بهینه سازی عملکرد: تو نسخه ۳.۱۳، حالت بدون GIL برای کدهای تک نخی یه کم کند بود. حالا با مفسر تطبیقی تخصصی (PEP 659)، این کندی به ۵-۱۰٪ رسیده، یعنی حتی اگه یه نخ استفاده کنی، خیلی ضرر نمیکنی.
مدیریت نخ ها: دو پرچم جدید اضافه شده:
context_aware_warnings: کاری میکنه هشدارها تو برنامه های چندنخی قاطی نکنن.
thread_inherit_context: تنظیمات نخ اصلی (مثل فیلترهای هشدار یا تنظیمات decimal) به نخ های جدید منتقل میشه.
پشتیبانی افزونه ها: APIهای C رو بهتر کردن تا افزونه هایی مثل numpy بتونن با این حالت کار کنن، ولی بعضی کتابخونه های PyPI هنوز نیاز به آپدیت دارن. برای استفاده از این حالت، باید مفسر پایتون رو با فعالسازی متغیر Py_GIL_DISABLED از سورس بسازی.
حذف GIL برای برنامه های محاسباتی (مثل پردازش تصویر یا شبیه سازی) یه تحول بزرگه، چون حالا میتونی از همه قدرت CPUت استفاده کنی. البته ممکنه حافظه بیشتری مصرف بشه و بعضی افزونه ها هنوز سازگار نباشن. این حالت فعلاً اختیاریه و برای جزئیات بیشتر میتونی PEP 703 و PEP 779 رو بخونی.
کامپایلر JIT (Just-In-Time) مثل یه توربو شارژر برای کد پایتونه. پایتون معمولاً کدت رو به بایتکد تبدیل میکنه و مفسر اون رو خط به خط اجرا میکنه. JIT میاد و بخشهای مهم بایتکد رو موقع اجرا به کد ماشین (دستورات مستقیم CPU) تبدیل میکنه که خیلی سریعتره. تو پایتون ۳.۱۴، یه نسخه آزمایشی از JIT تو نسخه های باینری macOS و ویندوز اضافه شده (PEP 744).
افزایش سرعت (گاهی): JIT میتونه کدت رو تا ۲۰٪ سریعتر کنه، مخصوصاً تو حلقه های سنگین یا محاسبات عددی. ولی تو بعضی موارد (مثل کارای ورودی/خروجی) ممکنه تا ۱۰٪ کندتر باشه، چون هنوز تو فاز آزمایشیه.
فعالسازی: با تنظیم متغیر محیطی PYTHON_JIT=1 کار میکنه. اگه از سورس میسازی، گزینه --enable-experimental-jit=yes-off رو استفاده کن.
محدودیتها: دیباگرهای بومی مثل gdb یا perf نمیتونن فریمهای JIT رو بخونن، ولی pdb مشکلی نداره. JIT تو حالت بدون GIL کار نمیکنه.
JIT برای برنامه های محاسباتی (مثل پردازش داده) میتونه سرعت رو حسابی بالا ببره، ولی چون آزمایشی هست، برای پروژه های جدی توصیه نمیشه. میتونی تستش کنی و باگهاش رو گزارش بدی تا بهتر بشه. برای اطلاعات بیشتر، PEP 744 رو ببین.
پایتون ۳.۱۴ کلی ویژگی جدید داره که اینجا پنج تا از مهم هاش رو با یه کم جزئیات برات توضیح میدم. برای اطلاعات کامل، PEPهای مربوط رو چک کن!
اینا رشتههایی با پیشوند t هستن که به نوع string.templatelib.Template تبدیل میشن. میتونی ازشون برای ساخت قالب های پویا استفاده کنی، مثلاً برای کوئری های SQL یا HTML، بدون اینکه نگران امنیت باشی. مثلاً:
name = "Ali" template = t"Hello {name}" # یه قالب میسازه
این برای توسعه وب، loggin یا کار با دیتابیس خیلی کاربردیه، چون هم انعطاف پذیره و هم جلوی تزریق کد مخرب رو میگیره.
حالا حاشیه نویسی های (مثل نوع ها تو تعریف توابع یا کلاسها) دیگه موقع تعریف اجرا نمیشن و تو یه جای خاص ذخیره میشن. این باعث میشه برنامه ات سریعتر لود بشه، چون پایتون کلی پردازش اضافی انجام نمیده. یه ماژول جدید به اسم annotationlib هم اضافه شده که میتونی باهاش حاشیه نویسی ها رو تو زمان اجرا بررسی کنی. مثلاً:
def func(x: "SomeType") -> None: ...
برای پروژه های بزرگ که پر از حاشیه نویسیه، این ویژگی سرعت و خوانایی رو بهتر میکنه.
میتونی چند تا مفسر پایتون رو تو یه برنامه اجرا کنی، انگار چند تا پایتون جدا داری! ماژول concurrent.interpreters این امکان رو میده و برای موازی سازی واقعی یا مدلهای همزمانی مثل CSP (که تو زبان Go میبینی) عالیه. مثلاً میتونی یه مفسر برای محاسبات سنگین و یکی برای کارای سبک داشته باشی. هنوز بعضی افزونه ها باهاش مشکل دارن، ولی آینده اش روشنه.
حالا میتونی با pdb به یه برنامه در حال اجرا وصل بشی و مثل یه برنامه نویس حرفه ای دیباگش کنی! این با تابع sys.remote_exec() کار میکنه که به دیباگرها و پروفایلرها اجازه میده به پروسه های پایتون وصل بشن. برای پروژههای پیچیده، مثل سرورهای در حال اجرا، این قابلیت خیلی بدرد بخوره.
یه ماژول جدید به اسم compression.zstd اضافه شده که از الگوریتم Zstandard برای فشرده سازی استفاده میکنه. این الگوریتم سریعتر و قویتر از gzip یا zlibه و برای فشرده کردن داده های بزرگ عالیه. مثلاً:
from compression import zstd data = b"some data" * 100 compressed = zstd.compress(data)
پوسته تعاملی پایتون (REPL) حالا کدت رو با رنگهای خوشگل نشون میده، انگار داری تو یه ویرایشگر پیشرفته کد میزنی! این باعث میشه کار با پوسته تعاملی جذابتر و راحتتر بشه، مخصوصاً برای تست سریع کدها. میتونی با متغیر PYTHON_BASIC_REPL این ویژگی رو خاموش کنی.
پایتون ۳.۱۴ با حذف GIL و اضافه کردن JIT آزمایشی، گامی بزرگ برای افزایش سرعت و بهره وری برداشته. ویژگی هایی مثل رشته های قالب، حاشیه نویسیهای تأخیری، چندین مفسر، دیباگ از راه دور و فشرده سازی Zstandard هم ابزارهای قدرتمندی بهت میدن تا کد زدن باحالتر بشه. اگه میخوای بیشتر راجبش بدونی، https://docs.python.org/3.14/whatsnew/3.14.html رفرنس خوبیه!