Embedding Python in a multi-threaded C++ application

  • Thread starter Mustafa Demirhan
  • Start date
M

Mustafa Demirhan

Hello,

I am trying to add Python scripting support to one of my applications
and I really need some help regarding the thread terminations.

The application is a multi-threaded Windows application and multiple
threads need to run Python code from time to time. Everything works
fine when all the threads operate without any errors. Each thread
creates a thread state, acquires the global lock, call the Python
files and then release the lock when they are done. However,
sometimes, some of these threads needs to be terminated from the main
in the middle of their operation (this generally is done by the user -
if the Python code is not working as expected, or doing something very
very long, the user is able to terminate the thread from the main
GUI). The problem here is that if the user terminates the thread, the
thread never releases the lock.

So, my question is: is there a way to safely terminate a running
thread? If not, is there a way to release the lock of a thread from
another thread (from the main thread)?
If none of these can be done, what happens if I call Py_Finalize and
finalize the Python Interpreter and the re-start it by Py_Initialize
and PyEval_InitThreads. Will that free all the resources allocated by
the previous interpreter?

I desperately need help. I couldnt find a good documentation on the
Internet. Any helps would be greatly appreciated.

Best wishes,
Mustafa Demirhan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,821
Latest member
AleidaSchi

Latest Threads

Top