8000 [3.14] gh-80334: fix multiprocessing.freeze_support for other spawn platforms (GH-134462) by miss-islington · Pull Request #134619 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

[3.14] gh-80334: fix multiprocessing.freeze_support for other spawn platforms (GH-134462) #134619

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 24, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions Doc/library/multiprocessing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1081,7 +1081,7 @@ Miscellaneous
.. function:: freeze_support()

Add support for when a program which uses :mod:`multiprocessing` has been
frozen to produce a Windows executable. (Has been tested with **py2exe**,
frozen to produce an executable. (Has been tested with **py2exe**,
**PyInstaller** and **cx_Freeze**.)

One needs to call this function straight after the ``if __name__ ==
Expand All @@ -1099,10 +1099,10 @@ Miscellaneous
If the ``freeze_support()`` line is omitted then trying to run the frozen
executable will raise :exc:`RuntimeError`.

Calling ``freeze_support()`` has no effect when invoked on any operating
system other than Windows. In addition, if the module is being run
normally by the Python interpreter on Windows (the program has not been
frozen), then ``freeze_support()`` has no effect.
Calling ``freeze_support()`` has no effect when the start method is not
*spawn*. In addition, if the module is being run normally by the Python
interpreter (the program has not been frozen), then ``freeze_support()``
has no effect.

.. function:: get_all_start_methods()

Expand Down
2 changes: 1 addition & 1 deletion Lib/multiprocessing/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ def freeze_support(self):
'''Check whether this is a fake forked process in a frozen executable.
If so then run code specified by commandline and exit.
'''
if sys.platform == 'win32' and getattr(sys, 'frozen', False):
if self.get_start_method() == 'spawn' and getattr(sys, 'frozen', False):
from .spawn import freeze_support
freeze_support()

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
:func:`multiprocessing.freeze_support` now checks for work on any "spawn"
start method platform rather than only on Windows.
Loading
0