Problems embedding python 2.6 in C++

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Tue Feb 2 18:30:17 EST 2010


En Tue, 02 Feb 2010 02:26:57 -0300, Paul <gobladoome at gmail.com> escribió:

> I've managed to get it working and so far stable...

Glad to see you finally made it work!

> Current working version:
>   [...]
>  mycppclass::callpy(funcname, args...)
>       m_mypymodule = PyImport_Import(pModuleName)
>
>       pyargs = PyTuple_SetItem * args
>       PyCallable_Check(func)
>       PyObject_CallObject(func,pyargs)
>
>       Py_XDECREF(m_mypymodule)
>
> So now the module is being imported each function call (luckily I don't  
> have
> to worry about performance)

Remember that after the module is successfully imported by the first time,  
a subsequent import returns early, as soon as it finds the module in  
sys.modules[] -- the performance penalty shouldn't be so big.

> I assume this means that the internal representation of the imported  
> module
> is being corrupted by something. I found another person with a similar  
> issue
> here:
> http://mail.python.org/pipermail/python-dev/2004-March/043306.html -  
> that is
> a long time ago but another multi-threaded app.

> I'm happy to use the working method but I'd like to understand what is  
> going
> on a bit more. Can anyone shed any further light?

Sorry, I cannot help on this. Seems to happen only with an embedded  
interpreter and a multithreaded application, and I've never used Python in  
that scenario.

If you could trim your code to a minimal example that shows the faulty  
behavior, that would be great, so others can test it too and eventually  
determine what's going on.

-- 
Gabriel Genellina




More information about the Python-list mailing list