diff options
author | Victor Stinner <vstinner@redhat.com> | 2019-05-28 14:02:50 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-28 14:02:50 (GMT) |
commit | 17a5588740b3d126d546ad1a13bdac4e028e6d50 (patch) | |
tree | 9e2045dcf3bf7772b03efabcb118e1d7c47beace | |
parent | a85a1d337d26a65036e427341d15e3979f7e9ced (diff) | |
download | cpython-17a5588740b3d126d546ad1a13bdac4e028e6d50.zip cpython-17a5588740b3d126d546ad1a13bdac4e028e6d50.tar.gz cpython-17a5588740b3d126d546ad1a13bdac4e028e6d50.tar.bz2 |
bpo-33725: multiprocessing uses spawn by default on macOS (GH-13603)
On macOS, the multiprocessing module now uses the "spawn" start
method by default.
-rw-r--r-- | Doc/library/multiprocessing.rst | 7 | ||||
-rw-r--r-- | Doc/whatsnew/3.8.rst | 10 | ||||
-rw-r--r-- | Lib/multiprocessing/context.py | 7 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2019-05-28-01-17-42.bpo-33725.fFZoDG.rst | 2 |
4 files changed, 24 insertions, 2 deletions
diff --git a/Doc/library/multiprocessing.rst b/Doc/library/multiprocessing.rst index cc6dd4e..a4771d3 100644 --- a/Doc/library/multiprocessing.rst +++ b/Doc/library/multiprocessing.rst @@ -102,7 +102,7 @@ to start a process. These *start methods* are will not be inherited. Starting a process using this method is rather slow compared to using *fork* or *forkserver*. - Available on Unix and Windows. The default on Windows. + Available on Unix and Windows. The default on Windows and macOS. *fork* The parent process uses :func:`os.fork` to fork the Python @@ -124,6 +124,11 @@ to start a process. These *start methods* are Available on Unix platforms which support passing file descriptors over Unix pipes. +.. versionchanged:: 3.8 + + On macOS, *spawn* start method is now the default: *fork* start method is no + longer reliable on macOS, see :issue:`33725`. + .. versionchanged:: 3.4 *spawn* added on all unix platforms, and *forkserver* added for some unix platforms. diff --git a/Doc/whatsnew/3.8.rst b/Doc/whatsnew/3.8.rst index 860d6cc..547e795 100644 --- a/Doc/whatsnew/3.8.rst +++ b/Doc/whatsnew/3.8.rst @@ -469,6 +469,16 @@ access the ``madvise()`` system call. (Contributed by Zackery Spytz in :issue:`32941`.) +multiprocessing +--------------- + +Added new :mod:`multiprocessing.shared_memory` module. +(Contributed Davin Potts in :issue:`35813`.) + +On macOS, the *spawn* start method is now used by default. +(Contributed by Victor Stinner in :issue:`33725`.) + + os -- diff --git a/Lib/multiprocessing/context.py b/Lib/multiprocessing/context.py index 5a48657..5f8e0f0 100644 --- a/Lib/multiprocessing/context.py +++ b/Lib/multiprocessing/context.py @@ -309,7 +309,12 @@ if sys.platform != 'win32': 'spawn': SpawnContext(), 'forkserver': ForkServerContext(), } - _default_context = DefaultContext(_concrete_contexts['fork']) + if sys.platform == 'darwin': + # bpo-33725: running arbitrary code after fork() is no longer reliable + # on macOS since macOS 10.14 (Mojave). Use spawn by default instead. + _default_context = DefaultContext(_concrete_contexts['spawn']) + else: + _default_context = DefaultContext(_concrete_contexts['fork']) else: diff --git a/Misc/NEWS.d/next/Library/2019-05-28-01-17-42.bpo-33725.fFZoDG.rst b/Misc/NEWS.d/next/Library/2019-05-28-01-17-42.bpo-33725.fFZoDG.rst new file mode 100644 index 0000000..6f1665f --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-05-28-01-17-42.bpo-33725.fFZoDG.rst @@ -0,0 +1,2 @@ +On macOS, the :mod:`multiprocessing` module now uses *spawn* start method by +default. |