Antoine Pitrou <pit...@free.fr> added the comment:

I agree that more generally PyImport_GetModule() should be fixed.  But it 
should be done carefully so as to not to lose the performance benefit of doing 
it.  I think we should open a separate issue about that.

PS: one possibility is to reuse the optimization already done in 
PyImport_ImportModuleLevelObject():

        /* Optimization: only call _bootstrap._lock_unlock_module() if
           __spec__._initializing is true.
           NOTE: because of this, initializing must be set *before*
           stuffing the new module in sys.modules.
         */
        spec = _PyObject_GetAttrId(mod, &PyId___spec__);
        if (_PyModuleSpec_IsInitializing(spec)) {
            PyObject *value = _PyObject_CallMethodIdObjArgs(interp->importlib,
                                            &PyId__lock_unlock_module, abs_name,
                                            NULL);
            if (value == NULL) {
                Py_DECREF(spec);
                goto error;
            }
            Py_DECREF(value);
        }
        Py_XDECREF(spec);

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue34572>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to