[issue32973] Importing the same extension module under multiple names breaks non-reinitialisable extension modules

Stefan Behnel report at bugs.python.org
Sat Aug 25 10:25:19 EDT 2018


Stefan Behnel <stefan_ml at behnel.de> added the comment:

Well, first of all, it's better than a crash. :)

Secondly, I'm sure NumPy doesn't currently support subinterpreters, just like most other extension modules. If I'm not mistaken, an interpreter switch can be detected through the interpreter state pointer [1] in the thread state, and extension modules that lack subinterpreter support can consider a change an error for them. since then something is trying to re-import the module into a different interpreter. That's not entirely safe since addresses can be reused, which I guess was the reason for adding an ID [2] in Py3.7, but that's only available in Py3.7+, not in Py3.5. So, the interpreter address is probably as good as it gets for Py<3.7.

[1] https://docs.python.org/3/c-api/init.html#c.PyThreadState
[2] https://docs.python.org/3/c-api/init.html#c.PyInterpreterState_GetID

Note: I'm not trying to keep anyone from implementing subinterpreter support here – just showing a way to keep things working and improving gradually as long as there is no full support for PEP 489, extension module reloading and subinterpreters, so that users don't have to go all the way in one step.

----------

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue32973>
_______________________________________


More information about the Python-bugs-list mailing list