Функції NumPy можуть працювати паралельно з потоками Python Numpy випустить
для більшості операцій з масивами в більшості систем. Наслідком цього є те, що ми можемо використовувати потоки для розпаралелювання наших програм, які використовують масиви numpy. 10 травня 2023 р.
однак, NumPy включає підтримку випуску GIL, що дозволяє кільком потокам виконувати функції NumPy паралельно. Ось чому багатопотоковість із NumPy може бути швидшою, ніж послідовна обробка та багатопроцесорна обробка з масивами.
Немає більше GIL! команда Python офіційно прийняла пропозицію. Вітаємо @colesbury з його багаторічними блискучими зусиллями з видалення GIL і щиро дякуємо Керівній раді Python і основній команді за продуманий план втілення цього в реальність.
Обхід GIL для паралельної обробки в Python
- Використовуйте альтернативне середовище виконання для Python.
- Встановіть GIL-Immune Library, наприклад NumPy.
- Напишіть модуль розширення C із випуском GIL.
- Нехай Cython згенерує для вас модуль розширення C.
- Виклик зовнішньої функції C за допомогою ctypes.
Багатопроцесорність: Багатопроцесорний модуль у Python обходить GIL шляхом створення окремих процесів інтерпретатора Python і, таким чином, забезпечує справжній паралелізм у завданнях, пов’язаних з процесором.
У світі програмування паралелізм є вирішальним аспектом для підвищення продуктивності ваших програм. У Python глобальне блокування інтерпретатора (GIL) було основною перешкодою для досягнення справжнього паралелізму. Однак із майбутнім випуском Python 3.13, GIL стає необов’язковим!