Skip to content

Commit 3f5a8ee

Browse files
authored
Merge pull request #356 from pristupa/maxprocessing-option
Add --maxprocesses option to use with --numprocesses=auto
2 parents d5b61e7 + f224c4b commit 3f5a8ee

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

changelog/337.feature.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
New ``--maxprocesses`` command-line option that limits the maximum number of workers when using ``--numprocesses=auto``.

testing/test_plugin.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ def test_dist_options(testdir):
2525
check_options(config)
2626
assert config.option.dist == "load"
2727
assert config.option.tx == ["popen"] * 2
28+
config = testdir.parseconfigure("--numprocesses", "3", "--maxprocesses", "2")
29+
check_options(config)
30+
assert config.option.dist == "load"
31+
assert config.option.tx == ["popen"] * 2
2832
config = testdir.parseconfigure("-d")
2933
check_options(config)
3034
assert config.option.dist == "load"

xdist/plugin.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ def pytest_addoption(parser):
4747
"you can use 'auto' here for auto detection CPUs number on "
4848
"host system",
4949
)
50+
group.addoption(
51+
"--maxprocesses",
52+
dest="maxprocesses",
53+
metavar="maxprocesses",
54+
action="store",
55+
type=int,
56+
help="limit the maximum number of workers to process the tests when using --numprocesses=auto",
57+
)
5058
group.addoption(
5159
"--max-worker-restart",
5260
"--max-slave-restart",
@@ -172,7 +180,10 @@ def pytest_cmdline_main(config):
172180
if config.option.numprocesses:
173181
if config.option.dist == "no":
174182
config.option.dist = "load"
175-
config.option.tx = ["popen"] * config.option.numprocesses
183+
numprocesses = config.option.numprocesses
184+
if config.option.maxprocesses:
185+
numprocesses = min(numprocesses, config.option.maxprocesses)
186+
config.option.tx = ["popen"] * numprocesses
176187
if config.option.distload:
177188
config.option.dist = "load"
178189
val = config.getvalue

xdist/remote.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ def remote_initconfig(option_dict, args):
234234
config.option.dist = "no"
235235
config.option.distload = False
236236
config.option.numprocesses = None
237+
config.option.maxprocesses = None
237238
config.args = args
238239
return config
239240

0 commit comments

Comments
 (0)