diff --git a/Lib/multiprocessing/popen_fork.py b/Lib/multiprocessing/popen_fork.py index 625981cf47627c..2c0c9f01b6c867 100644 --- a/Lib/multiprocessing/popen_fork.py +++ b/Lib/multiprocessing/popen_fork.py @@ -1,5 +1,6 @@ import os import signal +import sys from . import util @@ -70,7 +71,7 @@ def _launch(self, process_obj): os.close(parent_w) code = process_obj._bootstrap(parent_sentinel=child_r) finally: - os._exit(code) + sys.exit(code) else: os.close(child_w) os.close(child_r) diff --git a/Lib/multiprocessing/process.py b/Lib/multiprocessing/process.py index 271ba3fd325138..cadbfa4508bab0 100644 --- a/Lib/multiprocessing/process.py +++ b/Lib/multiprocessing/process.py @@ -130,7 +130,8 @@ def terminate(self): Terminate process; sends SIGTERM signal or uses TerminateProcess() ''' self._check_closed() - self._popen.terminate() + if self._popen is not None: + self._popen.terminate() def kill(self): ''' diff --git a/Misc/NEWS.d/next/Library/2024-11-25-09-55-04.gh-issue-127213.d2pVyU.rst b/Misc/NEWS.d/next/Library/2024-11-25-09-55-04.gh-issue-127213.d2pVyU.rst new file mode 100644 index 00000000000000..2ef99210d23bbf --- /dev/null +++ b/Misc/NEWS.d/next/Library/2024-11-25-09-55-04.gh-issue-127213.d2pVyU.rst @@ -0,0 +1 @@ +Replace os._exit() to sys.exit(), so that .so will alos be unloaded in child process