◐ Shell
clean mode source ↗

bpo-37224: To fix the random failed test cases of test___xxsubinterpreters in multiprocess. by shihai1991 · Pull Request #27240 · python/cpython

Expand Up @@ -39,6 +39,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 @@ -51,6 +65,7 @@ def run():
t = threading.Thread(target=run) t.start() _wait_for_interp_to_run(interp)
yield
Expand Down