Python GIL: одновременное встраивание C ++

Может ли Python, встроенный в C ++, позволить вам одновременно запускать n скриптов Python?

В настоящее время я имею дело с ужасом, который является GIL. Мой проект требует параллелизма как минимум из двух потоков, и простота ввода в Python действительно помогла бы с простотой кода.

Будет ли встраивание моего кода Python в сценарий C ++, который связан с многопоточностью, обойти проблемы, вызываемые GIL?

1

Решение

Может ли Python, встроенный в C ++, позволить вам запускать n скриптов Python одновременно?

Вам не нужно ничего делать, чтобы иметь возможность запускать несколько Python скрипты одновременно. GIL является локальным для интерпретатора, поэтому, если вы запускаете несколько процессов интерпретатора, GIL не будет препятствовать их одновременному выполнению.

Если это опечатка и вы имеете в виду потоки тогда да, вы можете вызвать C или C ++ код из Python, чтобы обойти GIL. Увидеть Состояние потока и глобальная блокировка интерпретатора для деталей соответствующих API.

0

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

Только если вы породили отдельных переводчиков.
GIL — это политика одного переводчика для защиты внутренних компонентов переводчика. Один переводчик будет запускать по одной строке за раз.

Единственный другой способ — это программировать хотя бы один из ваших потоков на чистом C ++ и предлагать API-интерфейс очереди связи для вашего сценария Python или любой другой способ асинхронного взаимодействия.

0