[llvm] r375458 - [lit] Simplify test scheduling via multiprocessing.Pool
Julian Lettner via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 21 14:57:18 PDT 2019
Author: yln
Date: Mon Oct 21 14:57:18 2019
New Revision: 375458
URL: http://llvm.org/viewvc/llvm-project?rev=375458&view=rev
Log:
[lit] Simplify test scheduling via multiprocessing.Pool
Modified:
llvm/trunk/utils/lit/lit/run.py
Modified: llvm/trunk/utils/lit/lit/run.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/run.py?rev=375458&r1=375457&r2=375458&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/run.py (original)
+++ llvm/trunk/utils/lit/lit/run.py Mon Oct 21 14:57:18 2019
@@ -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()
+ 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()
+ 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
More information about the llvm-commits
mailing list