embedding in multi threaded C/C++

Hi all, I'm working on embedding Python in a multi threaded application but found mostly old or confusing info on this. Can anyone point me to the right direction or send some working examples? Detail: Python 2.5.1, MacOSX Leopard 10.5.1, using Pytohn/C API The application initializes Python in a shared library, which in turn links in more libraries that may or may not use C API commands in parallel. Generally it all works fine, but when two libraries try to access Python code I get seg fault or similar. The closest I got to resolve this is based on this message: http://groups.google.fi/group/comp.lang.python/msg/fe4e114d1e1a741d which suggests starting a new sub interpreter for each task. However, i still get errors like below. (Thread 0 on it's own works fine.) According to the docs PyObject_HasAttrString should always succeeds so I don't understand what happens. Also I get thread mix-up messages randomly even though I double checked the implementation. 2 Threads accessing Python: ------------------------------- Thread 0 Crashed: 0 org.python.python 0x15a58bcc PyErr_Occurred + 16 (errors.c:77) 1 org.python.python 0x159c642c instance_getattr + 277 (classobject.c:698) 2 org.python.python 0x159f789b PyObject_HasAttrString + 116 (object.c:1069) While Thread 4 is running a process: ---------------------------------------- Thread 4: 0 org.python.python 0x15a43751 PyEval_EvalFrameEx + 794 (ceval.c:852) 1 org.python.python 0x15a49cdc PyEval_EvalCodeEx + 1819 (ceval.c:2831) 2 org.python.python 0x159df537 function_call + 320 (funcobject.c:517) 3 org.python.python 0x159be278 PyObject_Call + 45 (abstract.c:1860) 4 org.python.python 0x159c5ee5 instancemethod_call + 401 (classobject.c:2497) 5 org.python.python 0x159c297c PyObject_CallMethodObjArgs + 223 (abstract.c:1860) Thanks for any advice, George

On Mon, Mar 10, 2008, George Fazekas wrote:
I'm working on embedding Python in a multi threaded application but found mostly old or confusing info on this. Can anyone point me to the right direction or send some working examples?
You should ask on comp.lang.python or the capi-sig list. python-dev is for people working on improving the Python core. -- Aahz (aahz@pythoncraft.com) <*> http://www.pythoncraft.com/ "It is easier to optimize correct code than to correct optimized code." --Bill Harlan
participants (2)
-
Aahz
-
George Fazekas