Python c-api and reusing python-objects: works only once
Gabriel Genellina
gagsl-py at yahoo.com.ar
Wed Nov 8 16:42:37 EST 2006
At Wednesday 8/11/2006 17:04, karye2004 at gmail.com wrote:
>I'm trying to access python objects from c++. It works once. Second
>time it hangs.
>Does someone have any clue or some example code or pointer?
In general, try to make a *small* example that reproduces the problem you have.
>And the c++ class executed inside a thread:
>--------------------------------------------------------------------------------------------------
>QStringList Pythonizer::getPackages( char *pyModule )
>{
> // Initialize the Python Interpreter
> Py_Initialize();
>
> [... some code ...]
>
> DEBUG_LINE_INFO;
> if ( PyErr_Occurred() ) {
> PyErr_Print();
> PyErr_Clear();
> return QStringList::QStringList();
> }
>
> [... more code ...]
> // Finish the Python Interpreter
> Py_Finalize();
>
> return packageList;
>}
You are initializing the interpreter on *each* call to getPackages -
don't do that. Worse, "inside a thread". Just initialize the
interpreter when your program begins, and finalize it when your program ends.
Your current code does not call Py_Finalize when an error occurs. The
next time, you invoke Py_Initialize again; and you shouldn't.
--
Gabriel Genellina
Softlab SRL
__________________________________________________
Correo Yahoo!
Espacio para todos tus mensajes, antivirus y antispam ¡gratis!
¡Abrí tu cuenta ya! - http://correo.yahoo.com.ar
More information about the Python-list
mailing list