mirror of
https://github.com/python/cpython.git
synced 2026-05-29 22:01:05 +00:00
gh-109263: Start process from spawn context in multiprocessing no longer have side effect (GH-135813)
This commit is contained in:
parent
450e836aef
commit
c2202a7e66
3 changed files with 23 additions and 1 deletions
|
|
@ -184,7 +184,7 @@ def get_preparation_data(name):
|
|||
sys_argv=sys.argv,
|
||||
orig_dir=process.ORIGINAL_DIR,
|
||||
dir=os.getcwd(),
|
||||
start_method=get_start_method(),
|
||||
start_method=get_start_method(allow_none=True),
|
||||
)
|
||||
|
||||
# Figure out whether to initialise main in the subprocess as a module
|
||||
|
|
|
|||
|
|
@ -5967,6 +5967,26 @@ def test_context(self):
|
|||
self.assertRaises(ValueError, ctx.set_start_method, None)
|
||||
self.check_context(ctx)
|
||||
|
||||
@staticmethod
|
||||
def _dummy_func():
|
||||
pass
|
||||
|
||||
@warnings_helper.ignore_fork_in_thread_deprecation_warnings()
|
||||
def test_spawn_dont_set_context(self):
|
||||
# Run a process with spawn or forkserver context may change
|
||||
# the global start method, see gh-109263.
|
||||
for method in ('fork', 'spawn', 'forkserver'):
|
||||
multiprocessing.set_start_method(None, force=True)
|
||||
|
||||
try:
|
||||
ctx = multiprocessing.get_context(method)
|
||||
except ValueError:
|
||||
continue
|
||||
process = ctx.Process(target=self._dummy_func)
|
||||
process.start()
|
||||
process.join()
|
||||
self.assertIsNone(multiprocessing.get_start_method(allow_none=True))
|
||||
|
||||
def test_context_check_module_types(self):
|
||||
try:
|
||||
ctx = multiprocessing.get_context('forkserver')
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
Starting a process from spawn context in :mod:`multiprocessing` no longer
|
||||
sets the start method globally.
|
||||
Loading…
Add table
Add a link
Reference in a new issue