bpo-39244: multiprocessing return default start method first on macOS (GH-18625)

(cherry picked from commit db098bc1f0)

Co-authored-by: idomic <michael.ido@gmail.com>
This commit is contained in:
Miss Islington (bot) 2020-05-26 08:13:33 -07:00 committed by GitHub
parent 500cd89ecc
commit 1c88bf8541
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 4 deletions

View file

@ -257,10 +257,11 @@ class DefaultContext(BaseContext):
if sys.platform == 'win32': if sys.platform == 'win32':
return ['spawn'] return ['spawn']
else: else:
methods = ['spawn', 'fork'] if sys.platform == 'darwin' else ['fork', 'spawn']
if reduction.HAVE_SEND_HANDLE: if reduction.HAVE_SEND_HANDLE:
return ['fork', 'spawn', 'forkserver'] methods.append('forkserver')
else: return methods
return ['fork', 'spawn']
# #
# Context types for fixed start method # Context types for fixed start method

View file

@ -5039,7 +5039,9 @@ class TestStartMethod(unittest.TestCase):
self.assertEqual(methods, ['spawn']) self.assertEqual(methods, ['spawn'])
else: else:
self.assertTrue(methods == ['fork', 'spawn'] or self.assertTrue(methods == ['fork', 'spawn'] or
methods == ['fork', 'spawn', 'forkserver']) methods == ['spawn', 'fork'] or
methods == ['fork', 'spawn', 'forkserver'] or
methods == ['spawn', 'fork', 'forkserver'])
def test_preload_resources(self): def test_preload_resources(self):
if multiprocessing.get_start_method() != 'forkserver': if multiprocessing.get_start_method() != 'forkserver':

View file

@ -0,0 +1,2 @@
Fixed :class:`multiprocessing.context.get_all_start_methods`
to properly return the default method first on macOS.