Message335097
| Author |
pitrou |
| Recipients |
brett.cannon, eric.snow, ncoghlan, pitrou |
| Date |
2019年02月08日.17:13:37 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1549646017.22.0.395154635441.issue35943@roundup.psfhosted.org> |
| In-reply-to |
| Content |
PyImport_GetModule() returns whatever is in sys.modules, even if the module is still importing and therefore only partially initialized.
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);
Issue originally mentioned in issue34572. |
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2019年02月08日 17:13:39 | pitrou | set | recipients:
+ pitrou, brett.cannon, ncoghlan, eric.snow |
| 2019年02月08日 17:13:37 | pitrou | set | messageid: <1549646017.22.0.395154635441.issue35943@roundup.psfhosted.org> |
| 2019年02月08日 17:13:37 | pitrou | link | issue35943 messages |
| 2019年02月08日 17:13:37 | pitrou | create |
|