bpo-42406: Fix whichmodule() with multiprocessing (GH-23403)
* bpo-42406: Fix whichmodule() with multiprocessing Signed-off-by: Renato L. de F. Cunha <renatoc@br.ibm.com> Co-authored-by: Gregory P. Smith <greg@krypto.org>
This commit is contained in:
parent
86150d39c8
commit
86684319d3
|
@ -340,7 +340,9 @@ def whichmodule(obj, name):
|
||||||
# Protect the iteration by using a list copy of sys.modules against dynamic
|
# Protect the iteration by using a list copy of sys.modules against dynamic
|
||||||
# modules that trigger imports of other modules upon calls to getattr.
|
# modules that trigger imports of other modules upon calls to getattr.
|
||||||
for module_name, module in sys.modules.copy().items():
|
for module_name, module in sys.modules.copy().items():
|
||||||
if module_name == '__main__' or module is None:
|
if (module_name == '__main__'
|
||||||
|
or module_name == '__mp_main__' # bpo-42406
|
||||||
|
or module is None):
|
||||||
continue
|
continue
|
||||||
try:
|
try:
|
||||||
if _getattribute(module, name)[0] is obj:
|
if _getattribute(module, name)[0] is obj:
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
We fixed an issue in `pickle.whichmodule` in which importing
|
||||||
|
`multiprocessing` could change the how pickle identifies which module an
|
||||||
|
object belongs to, potentially breaking the unpickling of those objects.
|
Loading…
Reference in New Issue