Работает ли отдельный Python-процесс без GIL? - PullRequest
16 голосов
/ 14 июня 2009

Мне интересно, как на самом деле работает глобальная блокировка интерпретатора в python. Если у меня запуск приложения c ++, то четыре отдельных экземпляра скрипта Python будут работать параллельно на разных ядрах, или GIL будет еще глубже, чем один запущенный процесс, и будет контролировать все процессы Python независимо от процесса, который его породил. ?

Ответы [ 2 ]

28 голосов
/ 14 июня 2009

GIL влияет только на потоки в пределах одного процесса. Модуль multiprocessing фактически является альтернативой threading, которая позволяет программам на Python использовать несколько ядер и т. Д. Ваш сценарий также легко позволит использовать несколько ядер.

2 голосов
/ 14 июня 2009

Как указывает Алекс Мартелли, вы действительно можете избежать GIL, запустив несколько процессов, я просто хочу добавить и указать, что GIL является ограничением реализации (CPython), а не Python в целом, его можно реализовать Python без этого ограничения. Stackless Python приходит на ум.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...