Forwarded from TheAliBigdeli Channel
پایتون یه مکانیزمی داره به اسم GIL (Global Interpreter Lock) که باعث میشه در هر لحظه فقط یه بخش از کد پایتونی روی CPU اجرا بشه. یعنی حتی اگه چند کار همزمان تعریف کرده باشی، مفسر پایتون فقط یکیشون رو در لحظه اجرا میکنه.
هدف GIL اینه که از تداخل و خراب شدن دادهها جلوگیری کنه، چون حافظهی داخلی پایتون طوری طراحی نشده که چند بخش از برنامه همزمان بتونن روش بنویسن. این قفل باعث میشه اجرای برنامهها در حالت عادی سادهتر و ایمنتر باشه، ولی در عوض جلوی اجرای واقعی همزمان روی چند هسته CPU رو میگیره.
با این حال، GIL فقط برای کارهایی که محاسبات سنگین دارن دردسر سازه. در کارهایی مثل خوندن فایل، درخواست شبکه یا هر چیزی که بیشتر وقتش صرف انتظار میشه، GIL معمولاً مشکلی ایجاد نمیکنه، چون در اون زمان قفل آزاد میشه و کار بعدی میتونه ادامه پیدا کنه.
اما نکته جدید: در نسخهی ۳٫۱۴ پایتون، حذف (یا به عبارتی «اختیاری کردن») GIL وارد فاز جدیدی شده. در حالت Free-Threaded (یا No-GIL)، پایتون قادر میشه بخشهای محاسباتی را در چند تِرِد واقعی و همزمان اجرا کنه، که در صورت طراحی درست ممکنه عملکرد چند برابر بهتر بشه.
پست زیر می تونه در عمل بهتر بهت نشونش بده:
https://www.linkedin.com/posts/avi-chawla_finally-python-314-lets-you-disable-gil-activity-7383818720332169216-dtH_?utm_source=share&utm_medium=member_desktop&rcm=ACoAACOugCYBHGWYjHpFz9urfiJEDF52-xCSwtE
📢 @thealibigdeli_channel
#python
#news



