Python: GIL release via %threadallow #3238
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
SWIG is capable of generating multi-threading code.
We allow locking the GIL when python code is called from C++ through some virtual method. However, we do not automatically allow the GIL to be released when C++ code is called from python, for that would happen in abut 9000 places and the performance penalty would not be negligible.
This is done with
thread="1"
and%feature("nothreadallow");
.However, for some selected methods we do release the GIL, allowing multi-threading. This is done with
%threadsallow
only for the methodsRoot::startRendering()
,Root::renderOneFrame()
andRoot::_updateAllRenderTargets
.