summaryrefslogtreecommitdiff
path: root/Lib/multiprocessing/context.py
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2022-06-10 05:17:11 -0700
committerGitHub <noreply@github.com>2022-06-10 05:17:11 -0700
commit2ad51c636ae44ef847bf8d7ae687f739dfeade41 (patch)
treec27ea9eebdeba3a8ceb8ce862e6ea66fd3c083f5 /Lib/multiprocessing/context.py
parent8d8251a9b13e0290848bb4e2b501c04a24cebb65 (diff)
downloadcpython-git-2ad51c636ae44ef847bf8d7ae687f739dfeade41.tar.gz
gh-90549: Fix leak of global named resources using multiprocessing spawn (GH-30617)
Co-authored-by: XD Trol <milestonejxd@gmail.com> Co-authored-by: Antoine Pitrou <pitrou@free.fr> (cherry picked from commit 30610d28374f5a9698d456cebf3ae496ac01af51) Co-authored-by: Leo Trol <milestone.jxd@gmail.com>
Diffstat (limited to 'Lib/multiprocessing/context.py')
-rw-r--r--Lib/multiprocessing/context.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/Lib/multiprocessing/context.py b/Lib/multiprocessing/context.py
index 8d0525d5d6..b1960ea296 100644
--- a/Lib/multiprocessing/context.py
+++ b/Lib/multiprocessing/context.py
@@ -223,6 +223,10 @@ class Process(process.BaseProcess):
def _Popen(process_obj):
return _default_context.get_context().Process._Popen(process_obj)
+ @staticmethod
+ def _after_fork():
+ return _default_context.get_context().Process._after_fork()
+
class DefaultContext(BaseContext):
Process = Process
@@ -283,6 +287,11 @@ if sys.platform != 'win32':
from .popen_spawn_posix import Popen
return Popen(process_obj)
+ @staticmethod
+ def _after_fork():
+ # process is spawned, nothing to do
+ pass
+
class ForkServerProcess(process.BaseProcess):
_start_method = 'forkserver'
@staticmethod
@@ -326,6 +335,11 @@ else:
from .popen_spawn_win32 import Popen
return Popen(process_obj)
+ @staticmethod
+ def _after_fork():
+ # process is spawned, nothing to do
+ pass
+
class SpawnContext(BaseContext):
_name = 'spawn'
Process = SpawnProcess