Skip to content

Commit c2989b7

Browse files
authored
gh-133744: Fix multiprocessing interrupt test: add an event (#133746)
Add an event to synchronize the parent process with the child process: wait until the child process starts sleeping.
1 parent d29ddbd commit c2989b7

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

Lib/test/_test_multiprocessing.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -513,9 +513,14 @@ def _sleep_some(cls):
513513
time.sleep(100)
514514

515515
@classmethod
516-
def _sleep_no_int_handler(cls):
516+
def _sleep_some_event(cls, event):
517+
event.set()
518+
time.sleep(100)
519+
520+
@classmethod
521+
def _sleep_no_int_handler(cls, event):
517522
signal.signal(signal.SIGINT, signal.SIG_DFL)
518-
cls._sleep_some()
523+
cls._sleep_some_event(event)
519524

520525
@classmethod
521526
def _test_sleep(cls, delay):
@@ -525,7 +530,10 @@ def _kill_process(self, meth, target=None):
525530
if self.TYPE == 'threads':
526531
self.skipTest('test not appropriate for {}'.format(self.TYPE))
527532

528-
p = self.Process(target=target or self._sleep_some)
533+
event = self.Event()
534+
if not target:
535+
target = self._sleep_some_event
536+
p = self.Process(target=target, args=(event,))
529537
p.daemon = True
530538
p.start()
531539

@@ -543,8 +551,11 @@ def _kill_process(self, meth, target=None):
543551
self.assertTimingAlmostEqual(join.elapsed, 0.0)
544552
self.assertEqual(p.is_alive(), True)
545553

546-
# XXX maybe terminating too soon causes the problems on Gentoo...
547-
time.sleep(1)
554+
timeout = support.SHORT_TIMEOUT
555+
if not event.wait(timeout):
556+
p.terminate()
557+
p.join()
558+
self.fail(f"event not signaled in {timeout} seconds")
548559

549560
meth(p)
550561

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Fix multiprocessing interrupt test. Add an event to synchronize the parent
2+
process with the child process: wait until the child process starts
3+
sleeping. Patch by Victor Stinner.

0 commit comments

Comments
 (0)