A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2013-December/130793.html below:

[Python-Dev] thread issues when embedding Python

[Python-Dev] thread issues when embedding Python [Python-Dev] thread issues when embedding PythonAntoine Pitrou solipsis at pitrou.net
Wed Dec 18 16:25:43 CET 2013
On Wed, 18 Dec 2013 00:19:23 +0100
Daniel Pocock <daniel at pocock.com.au> wrote:
> 
> If a main thread does things like importing a module and obtaining a
> reference to a Python method, can those things be used by other C++
> threads or do they have to repeat those lookups?

The C++ threads must use the PyGILState API to initialize corresponding
Python thread states, and to hold the GIL.

However, you don't have to *repeat* the lookups - pointers valid in
one thread are valid in other threads, as long as you own a strong
reference to the PyObject (beware functions which return a borrowed
reference).

> Is there any logic that needs to be executed once only as each thread is
> started? (the doc suggests just PyGILState_Ensure/PyGILState_Release
> each time a thread accesses Python methods - is there anything else?)

If you use the PyGILState API, there shouldn't be anything else.

> (e.g. should users always
> explicitly call PyEval_InitThreads() in their main thread or worker
> threads or both?)

You only need to call PyEval_InitThreads() once in the main Python
thread.

Regards

Antoine.


More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4