Skip to content

Commit e907440

Browse files
convert processor count to a user-defined argument
1 parent 2d7c055 commit e907440

File tree

4 files changed

+17
-7
lines changed

4 files changed

+17
-7
lines changed

Diff for: build_incremental.py

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ def main():
3939
args.include_repos,
4040
args.exclude_repos,
4141
args.verbose,
42+
args.process_count,
4243
project.ProjectBuilder.factory(
4344
args.include_actions,
4445
args.exclude_actions,

Diff for: builder.py

+1
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ def main():
3939
args.include_repos,
4040
args.exclude_repos,
4141
args.verbose,
42+
args.process_count,
4243
project.ProjectBuilder.factory(
4344
args.include_actions,
4445
args.exclude_actions,

Diff for: project.py

+14-7
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,10 @@ def add_arguments(parser):
682682
parser.add_argument("--job-type",
683683
help="The type of job to run. This influences which projects are XFailed, for example the stress tester tracks its XFails under a different job type. Defaults to 'source-compat'.",
684684
default='source-compat')
685+
parser.add_argument('--process-count',
686+
type=int,
687+
help='Number of parallel process to spawn when building projects',
688+
default=multiprocessing.cpu_count())
685689

686690
def add_minimal_arguments(parser):
687691
"""Add common arguments to parser."""
@@ -975,6 +979,10 @@ def output_fd(self, subtarget):
975979

976980

977981
class ProjectListBuilder(ListBuilder):
982+
def __init__(self, include, exclude, verbose, process_count, subbuilder, target):
983+
super().__init__(include, exclude, verbose, subbuilder, target)
984+
self.processes = process_count
985+
978986
def included(self, subtarget):
979987
project = subtarget
980988
return (('platforms' not in project or
@@ -986,27 +994,26 @@ def new_result(self):
986994

987995
def build(self, stdout=sys.stdout):
988996
# Setup process pool to submit work to
989-
processes = multiprocessing.cpu_count()
990-
thread_pool = futures.ProcessPoolExecutor(max_workers=processes)
991-
submited_futures = []
997+
thread_pool = futures.ProcessPoolExecutor(max_workers=self.processes)
998+
submitted_futures = []
992999

9931000
# Create results object to store results
9941001
results = self.new_result()
9951002

9961003
projects_to_build = [subtarget for subtarget in self.subtargets() if self.included(subtarget)]
9971004
common.debug_print(
998-
f"Building {len(projects_to_build)} projects across {processes} parallel processes\n"
1005+
f"Building {len(projects_to_build)} projects across {self.processes} parallel processes\n"
9991006
)
10001007

10011008
# For each project that needs building, submit a future to build said project
10021009
for project in projects_to_build:
10031010
project_subbuilder = self.subbuilder.initialize(*([project] + self.payload()))
10041011
worker = thread_pool.submit(project_subbuilder.build)
1005-
submited_futures.append(worker)
1012+
submitted_futures.append(worker)
10061013

10071014
# Cleanup in main process
1008-
futures.wait(submited_futures)
1009-
for _future in submited_futures:
1015+
futures.wait(submitted_futures)
1016+
for _future in submitted_futures:
10101017
results.add(_future.result())
10111018

10121019
return results

Diff for: runner.py

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ def main():
5959
args.include_repos,
6060
args.exclude_repos,
6161
args.verbose,
62+
args.process_count,
6263
project.ProjectBuilder.factory(
6364
args.include_versions,
6465
args.exclude_versions,

0 commit comments

Comments
 (0)