◐ Shell
clean mode source ↗

[3.9] bpo-37224: To fix the random failed test cases of test___xxsubinterpreters in multiprocess. (GH-27240) by miss-islington · Pull Request #27453 · python/cpython

Expand Up @@ -38,6 +38,20 @@ def _run_output(interp, request, shared=None): return rpipe.read()

def _wait_for_interp_to_run(interp, timeout=None): # bpo-37224: Running this test file in multiprocesses will fail randomly. # The failure reason is that the thread can't acquire the cpu to # run subinterpreter eariler than the main thread in multiprocess. if timeout is None: timeout = support.SHORT_TIMEOUT start_time = time.monotonic() deadline = start_time + timeout while not interpreters.is_running(interp): if time.monotonic() > deadline: raise RuntimeError('interp is not running') time.sleep(0.010)

@contextlib.contextmanager def _running(interp): r, w = os.pipe() Expand All @@ -50,6 +64,7 @@ def run():
t = threading.Thread(target=run) t.start() _wait_for_interp_to_run(interp)
yield
Expand Down