GIL Python предотвращает параллельное выполнение в функционально отдельной библиотеке c ++?

Я планирую написать скрипт на Python, который использует многопоточный код C ++, над которым я работаю. Код C ++ не будет изменять какие-либо значения во время выполнения Python. Будет ли глобальная блокировка интерпретатора python препятствовать параллельному выполнению потоков в коде c ++? Если да, то какие есть хорошие ресурсы, чтобы понять, как это обойти?

Скрипт python будет вызывать только интерфейс, предоставляемый кодом c ++: void notify_btn_pressed(int btn_id), Python и код C ++ не будут иметь никакого другого взаимодействия.

1

Решение

GIL — это питон переводчик замок. Интерпретатор байт-кода Python не знает, что ваша C ++ библиотека делает за кулисами. Он не имеет никакого способа помешать вашему коду C ++ создавать дополнительные потоки и не пытается помешать вам сделать это.

Вот некоторые фон на GIL и нативный код это объясняет это. И вот более общая информация о GIL. Эти ссылки относятся к Python 3.x, но Python 2.x работает так же. Вы можете изменить 3 в 2 в URL, чтобы увидеть соответствующие (и почти идентичные) документы Python 2.x.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]