]> granicus.if.org Git - llvm/commitdiff
[lit] Do not create semaphores when we do not need them
authorJulian Lettner <jlettner@apple.com>
Wed, 16 Oct 2019 23:25:46 +0000 (23:25 +0000)
committerJulian Lettner <jlettner@apple.com>
Wed, 16 Oct 2019 23:25:46 +0000 (23:25 +0000)
Parallelism groups and semaphores are only required for parallel
execution.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375055 91177308-0d34-0410-b5e6-96231b3b80d8

utils/lit/lit/run.py

index d08da9b11de8cf76f002f16d62f75da20b8f6aa6..6d1cc7c9207538f1f68c26ba9b3b925dbd89e64a 100644 (file)
@@ -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: