Найкращою особливістю ctypes є те, що коли програма виконує функцію ctypes, вона випускає GIL.
Багатопроцесорність: модуль багатопроцесорності в Python обходить GIL шляхом створення окремих процесів інтерпретатора Python і, таким чином, забезпечує справжній паралелізм у завданнях, пов’язаних з процесором.
Cython дозволяє звільнити GIL. Ми використовуємо обидва в scikit-learn. Щоб випустити GIL у Cython, вам просто потрібно використати with nogil: менеджер контексту (ви також можете зробити це безпосередньо, використовуючи prange). Ваш код всередині оператора nogil не може взаємодіяти з Python.
1 Відповідь. Найкраще, що я можу сказати, читаючи документи, pandas просто випускає GIL для певних операцій: ми випускаємо глобальне блокування інтерпретатора (GIL) для деяких операцій Cython. Це дозволить іншим потокам працювати одночасно під час обчислень, потенційно сприяючи покращенню продуктивності від багатопоточності …
Традиційним методом досягнення паралелізму в Python було виконувати інтерпретатор у кількох екземплярах за допомогою різних системних процесів. Цей метод відносно простий і служить засобом обходу глобального блокування інтерпретатора (GIL).
Немає більше GIL! команда Python офіційно прийняла пропозицію. Вітаємо @colesbury з його багаторічними блискучими зусиллями з видалення GIL і щиро дякуємо Керівній раді Python і основній команді за продуманий план втілення цього в реальність.