Возможно ли иметь истинный параллелизм в python из-за присутствия GIL? Насколько я знаю, каждый поток получает GIL перед выполнением, в то время как другие потоки ожидают, пока GIL не будет выпущен. Почему GIL, если это такое узкое местоИстинный параллелизм в Python
ответ
Python, язык не обязательно обеспечивает соблюдение GIL. Это разные версии языка, которые могут иметь или не иметь GIL.
CPython (де-факто реализация) имеет GIL. Таким образом, вы не можете иметь поистине параллельные потоки, пока используете его. Тем не менее, вы можете использовать многопроцессорную обработку для обеспечения параллелизма. PyPy, еще одна реализация языка также имеет GIL.
Существуют и другие реализации языка Python (например, Jython & IronPython), которые не имеют GIL, и вы можете использовать потоки для выполнения параллельных операций.
Cython имеет GIL, но вы можете освободить его, используя инструкцию with
.
Звенья проектов, упомянутых:
Больше ресурсов по этой теме:
вопрос об обмене стека программирования: https://softwareengineering.stackexchange.com/questions/186889/why-was-python-written-with-the-gil (Спасибо @Rogalski)
Python Wiki: https://wiki.python.org/moin/GlobalInterpreterLock
разговор Дэвида Бизли в - https://www.youtube.com/watch?v=Obt-vMVdM8s
Статья из Джефф Knupp: https://jeffknupp.com/blog/2013/06/30/pythons-hardest-problem-revisited/
Почему cpython решил использовать GIL. Какая польза от GIL –
http://programmers.stackexchange.com/questions/186889/why-was-python-written-with-the-gil –
@FaizHalde: в Интернете есть сотни статей по этой теме –
Если вы хотите узнать о GIL в Python, я хотел бы предложить, чтобы начать читать здесь:
https://wiki.python.org/moin/GlobalInterpreterLock
Смотрите раздел Устранение GIL для объяснения, почему питон все еще имеет GIL.
BTW: вы найдете эту информацию по googling «python gil» и нажав на первый результат ... Возможно, быстрее, чем публикация на SO ...;) – Felix
См. [Исследование Джил Дэвида Бэйзли] (http://www.dabeaz.com/GIL/) для получения большой информации на эту тему. – mshildt