Kaydet (Commit) a33e11e4 authored tarafından Brett Cannon's avatar Brett Cannon

Issue #17314: Stop using imp in multiprocessing.forking and move over

to importlib.
üst 22c039bf
......@@ -450,6 +450,7 @@ def prepare(data):
# Main modules not actually called __main__.py may
# contain additional code that should still be executed
import imp
import importlib
if main_path is None:
dirs = None
......@@ -460,16 +461,17 @@ def prepare(data):
assert main_name not in sys.modules, main_name
sys.modules.pop('__mp_main__', None)
file, path_name, etc = imp.find_module(main_name, dirs)
try:
# We should not do 'imp.load_module("__main__", ...)'
# We should not try to load __main__
# since that would execute 'if __name__ == "__main__"'
# clauses, potentially causing a psuedo fork bomb.
main_module = imp.load_module(
'__mp_main__', file, path_name, etc
)
finally:
if file:
file.close()
loader = importlib.find_loader(main_name, path=dirs)
main_module = imp.new_module(main_name)
try:
loader.init_module_attrs(main_module)
except AttributeError: # init_module_attrs is optional
pass
main_module.__name__ = '__mp_main__'
code = loader.get_code(main_name)
exec(code, main_module.__dict__)
sys.modules['__main__'] = sys.modules['__mp_main__'] = main_module
......@@ -112,6 +112,8 @@ Core and Builtins
Library
-------
- Issue #17314: Move multiprocessing.forking over to importlib.
- Issue #11959: SMTPServer and SMTPChannel now take an optional map, use of
which avoids affecting global state.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment