bpo-40327: Improve atomicity, speed, and memory efficiency of the items() loop (GH-19628)
(cherry picked from commit 75bedbe2ed4119ff18a2ea86c544b3cf08a92e75)
Co-authored-by: Raymond Hettinger <rhettinger@users.noreply.github.com>
diff --git a/Lib/pickle.py b/Lib/pickle.py
index 515cb8a..af50a9b 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -339,7 +339,7 @@
return module_name
# 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 list(sys.modules.items()):
+ for module_name, module in sys.modules.copy().items():
if module_name == '__main__' or module is None:
continue
try: