Многопоточность в C ++ со встроенными модулями Python

Я пытаюсь создать многопоточную программу, запустив поток повышения, который вызывает функцию, которая, в свою очередь, вызывает некоторый модуль python, но программа зависает там, когда она получает некоторую блокировку PyGILState_Ensure () и ожидает ее бесконечного освобождения. Можете ли вы, пожалуйста, скажи мне, что здесь не так.

Да, на самом деле модуль python вызывает мой код на c ++, который вызывает другой модуль python в отдельных потоках, поэтому я думаю, что он ожидает освобождения PyGIL, что приводит к тупику, поэтому есть ли какое-то решение для него с использованием патча для удаления PyGIL?

0

Решение

Интерпретатор Python не является повторно входящим и должен блокировать интерпретатор во время его вызова (см., Например, http://dabeaz.blogspot.be/2011/08/inside-look-at-gil-removal-patch-of.html). В вашей конкретной ситуации кажется, что на интерпретаторе уже запущен еще один вызов Python, и он удерживает GIL.

2

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

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

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