Most pytest test cases instantiate a Pyomo solver (cplex / gurobi / xpress) and leave the thread count at the solver's default — which on modern CPUs means each solve fans out to all physical cores. With many tests running in sequence (and several pytest processes in CI), this saturates the host, slows the suite, and makes test timings noisy on shared runners.
Suggested fix: set Threads=1 (or the per-solver equivalent) wherever tests construct a solver — most centrally in mpisppy/tests/utils.py::get_solver.
Out of scope: production code paths (those should keep solver-thread tuning configurable; this is only about the test environment).
Most pytest test cases instantiate a Pyomo solver (cplex / gurobi / xpress) and leave the thread count at the solver's default — which on modern CPUs means each solve fans out to all physical cores. With many tests running in sequence (and several pytest processes in CI), this saturates the host, slows the suite, and makes test timings noisy on shared runners.
Suggested fix: set
Threads=1(or the per-solver equivalent) wherever tests construct a solver — most centrally inmpisppy/tests/utils.py::get_solver.Out of scope: production code paths (those should keep solver-thread tuning configurable; this is only about the test environment).