Мне интересно, как работает Global Interpreter Lock в python. Если у меня есть запуск приложения С++, четыре отдельных экземпляра python script будут выполняться параллельно на отдельных ядрах, или же GIL будет идти еще глубже, а затем только один процесс, который был запущен и управляет всем процессом python, независимо от процесса, который породил его?
Происходит ли запуск отдельных процессов python во избежание GIL?
Ответ 1
GIL влияет только на потоки в рамках одного процесса. Модуль multiprocessing
фактически является альтернативой threading
, который позволяет программам Python использовать несколько ядер и c. Ваш сценарий легко позволит использовать несколько ядер.
Ответ 2
Как указывает Алекс Мартелли, вы действительно можете избежать GIL, выполнив несколько процессов, я просто хочу добавить и указать, что GIL является ограничением реализации (CPython), а не Python в целом, его можно реализовать Python без этого ограничения. Stackless Python приходит на ум.