From 640d6de4293a2883513cc84c535bb7de9f882e1c Mon Sep 17 00:00:00 2001 From: Julian Lettner Date: Wed, 16 Oct 2019 23:25:46 +0000 Subject: [PATCH] [lit] Do not create semaphores when we do not need them Parallelism groups and semaphores are only required for parallel execution. llvm-svn: 375055 --- llvm/utils/lit/lit/run.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/llvm/utils/lit/lit/run.py b/llvm/utils/lit/lit/run.py index d08da9b11de8..6d1cc7c92075 100644 --- a/llvm/utils/lit/lit/run.py +++ b/llvm/utils/lit/lit/run.py @@ -19,11 +19,6 @@ class Run(object): def __init__(self, lit_config, tests): self.lit_config = lit_config self.tests = tests - # Set up semaphores to limit parallelism of certain classes of tests. - self.parallelism_semaphores = { - k : NopSemaphore() if v is None else - multiprocessing.BoundedSemaphore(v) - for k, v in lit_config.parallelism_groups.items()} def execute_tests(self, progress_callback, workers, max_time): """ @@ -76,14 +71,18 @@ class Run(object): if max_time: deadline = time.time() + max_time + semaphores = { + k: NopSemaphore() if v is None else + multiprocessing.BoundedSemaphore(v) for k, v in + self.lit_config.parallelism_groups.items()} + # Start a process pool. Copy over the data shared between all test runs. # FIXME: Find a way to capture the worker process stderr. If the user # interrupts the workers before we make it into our task callback, they # will each raise a KeyboardInterrupt exception and print to stderr at # the same time. pool = multiprocessing.Pool(workers, lit.worker.initializer, - (self.lit_config, - self.parallelism_semaphores)) + (self.lit_config, semaphores)) # Install a console-control signal handler on Windows. if lit.util.win32api is not None: