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
___
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com