[capi-sig] embedded. how to force stop sub-interpreter from c

Alex novermore at gmail.com
Thu Jun 9 13:53:00 CEST 2011


i am using
PyThreadState* Py_NewInterpreter()
to create few sub-interpreters in own c threads

there is only pure python in a scrips running in sub-interpreters

here is how sub-interpreter started (delphi..no differences with c)

gilstate := PyGILState_Ensure();
global_state := PyThreadState_Get;
PyThreadState_Swap(nil);
fThreadState := Py_NewInterpreter;

if Assigned(fThreadState) then
begin
 PyThreadState_Swap(fThreadState); PyRun_String('some python code');
 Py_EndInterpreter(fThreadState);
 PyThreadState_Swap(global_state);
 PyGILState_Release(gilstate);
end else
 raise EPythonError.Create( 'Could not create a new thread state');
all works fine, they run, they die when script ends

but i cant figure out how to force stop sub-interpreter from c

for example there is a python script

while True:
  time.sleep(3)

i need to stop this script and sub-interpreter from main program, how can i
do that?


More information about the capi-sig mailing list