mirror of
https://github.com/RPCS3/llvm.git
synced 2026-01-31 01:25:19 +01:00
[lit] Simplify test scheduling via multiprocessing.Pool
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375458 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user