From 6556cd04b75ffa4a0b467b6893f5eeda85c76b02 Mon Sep 17 00:00:00 2001 From: Julian Lettner Date: Mon, 21 Oct 2019 21:57:18 +0000 Subject: [PATCH] [lit] Simplify test scheduling via multiprocessing.Pool git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375458 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/lit/lit/run.py | 41 +++++++++++++++++------------------------ 1 file changed, 17 insertions(+), 24 deletions(-) diff --git a/utils/lit/lit/run.py b/utils/lit/lit/run.py index a246eaa31e8..d39b4b19b00 100644 --- a/utils/lit/lit/run.py +++ b/utils/lit/lit/run.py @@ -127,27 +127,20 @@ class ParallelRun(Run): return True lit.util.win32api.SetConsoleCtrlHandler(console_ctrl_handler, True) - try: - async_results = [ - pool.apply_async(lit.worker.execute, args=[test], - callback=lambda r, t=test: self._process_result(t, r)) - for test in self.tests] - pool.close() - - # Wait for all results to come in. The callback that runs in the - # parent process will update the display. - for a in async_results: - timeout = deadline - time.time() - a.wait(timeout) - if not a.successful(): - # TODO(yln): this also raises on a --max-time time - a.get() # Exceptions raised here come from the worker. - if self.hit_max_failures: - break - except: - # Stop the workers and wait for any straggling results to come in - # if we exited without waiting on every async result. - pool.terminate() - raise - finally: - pool.join() + async_results = [ + pool.apply_async(lit.worker.execute, args=[test], + callback=lambda r, t=test: self._process_result(t, r)) + for test in self.tests] + pool.close() + + for ar in async_results: + timeout = deadline - time.time() + try: + ar.get(timeout) + except multiprocessing.TimeoutError: + # TODO(yln): print timeout error + pool.terminate() + break + if self.hit_max_failures: + pool.terminate() + break -- 2.50.1