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
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')