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>
(cherry picked from commit 86684319d3dad8e1a7b0559727a48e0bc50afb01)

Co-authored-by: Renato Cunha <renatocunha@acm.org>
diff --git a/Lib/pickle.py b/Lib/pickle.py
index cbac5f1..e63a8b6 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -340,7 +340,9 @@
     # Protect the iteration by using a list copy of sys.modules against dynamic
     # modules that trigger imports of other modules upon calls to getattr.
     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
         try:
             if _getattribute(module, name)[0] is obj: