Skip to content

Commit d9b23e1

Browse files
committed
ENH test check pid of semaphore_tracker
1 parent 49e96f1 commit d9b23e1

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

Lib/multiprocessing/spawn.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,11 @@ def get_preparation_data(name):
169169
else:
170170
sys_path[i] = process.ORIGINAL_DIR
171171

172+
if sys.platform != "win32":
173+
from .semaphore_tracker import _semaphore_tracker
174+
_semaphore_tracker.ensure_running()
175+
d['semaphore_tracker_pid'] = _semaphore_tracker._pid
176+
172177
d.update(
173178
name=name,
174179
sys_path=sys_path,
@@ -231,6 +236,10 @@ def prepare(data):
231236
if 'start_method' in data:
232237
set_start_method(data['start_method'], force=True)
233238

239+
if 'semaphore_tracker_pid' in data:
240+
from .semaphore_tracker import _semaphore_tracker
241+
_semaphore_tracker._pid = data['semaphore_tracker_pid']
242+
234243
if 'init_main_from_name' in data:
235244
_fixup_main_from_name(data['init_main_from_name'])
236245
elif 'init_main_from_path' in data:

Lib/test/_test_multiprocessing.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4896,10 +4896,10 @@ def test_semaphore_tracker_sigkill(self):
48964896
self.check_semaphore_tracker_death(signal.SIGKILL, True)
48974897

48984898
@staticmethod
4899-
def _is_semaphore_tracker_reused(conn):
4899+
def _is_semaphore_tracker_reused(conn, pid):
49004900
from multiprocessing.semaphore_tracker import _semaphore_tracker
49014901
_semaphore_tracker.ensure_running()
4902-
reused = _semaphore_tracker._pid is None
4902+
reused = _semaphore_tracker._pid == pid
49034903
reused &= _semaphore_tracker._check_alive()
49044904
conn.send(reused)
49054905

@@ -4911,7 +4911,7 @@ def test_semaphore_tracker_reused(self):
49114911
ctx = multiprocessing.get_context("spawn")
49124912
r, w = ctx.Pipe(duplex=False)
49134913
p = ctx.Process(target=self._is_semaphore_tracker_reused,
4914-
args=(w,))
4914+
args=(w, pid))
49154915
p.start()
49164916
is_semaphore_tracker_reused = r.recv()
49174917

0 commit comments

Comments
 (0)