Question

J'ai un programme en python qui appelle une bibliothèque c++, qui souhaite la libération de tous les python serrures de sorte que d'autres python threads peuvent s'exécuter.

À l'aide de PyEval_SaveThread et PyEval_ReleaseThread J'ai des erreurs que l'état du thread est NULLE:

Fatal Python error: PyEval_SaveThread: NULL tstate

Cependant, le niveau inférieur de la fonction semblent accepter la NULLE état joyeusement:

PyThreadState *s;
s = PyThreadState_Swap(NULL);
// (now s = 0)
PyEval_ReleaseLock();

// ....

PyEval_AcquireLock();
PyThreadState_Swap(s);

// everything seems to be just fine :)
Était-ce utile?

La solution

Réponse: pas de, il n'est jamais destiné à être NULL (si elle l'est, c'est une erreur fatale).S'est avéré que c'était parce que j'étais reliant à l'encontre de deux différentes versions de python, via boost_python, et l'autre directement.

Tip Top:utilisation ldd ou otool -L pour vérifier votre bibliothèque de dépendances lors de drôles de choses qui se passe ;)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top