Skip to content

Commit

Permalink
Merge pull request #560 from utapyngo/logical-cpu-count
Browse files Browse the repository at this point in the history
  • Loading branch information
Zac-HD committed Aug 3, 2020
2 parents c6255fa + e528a42 commit 0094b29
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 34 deletions.
1 change: 1 addition & 0 deletions changelog/553.bugfix.rst
@@ -0,0 +1 @@
When using ``-n auto``, count the number of physical CPU cores instead of logical ones.
8 changes: 7 additions & 1 deletion setup.py
@@ -1,6 +1,12 @@
from setuptools import setup, find_packages

install_requires = ["execnet>=1.1", "pytest>=4.4.0", "pytest-forked", "six"]
install_requires = [
"execnet>=1.1",
"psutil>=3.0.0",
"pytest>=4.4.0",
"pytest-forked",
"six",
]


with open("README.rst") as f:
Expand Down
23 changes: 2 additions & 21 deletions src/xdist/plugin.py
@@ -1,31 +1,12 @@
import os
import uuid

import psutil
import py
import pytest


def auto_detect_cpus():
try:
from os import sched_getaffinity
except ImportError:
if os.environ.get("TRAVIS") == "true":
# workaround https://bitbucket.org/pypy/pypy/issues/2375
return 2
try:
from os import cpu_count
except ImportError:
from multiprocessing import cpu_count
else:

def cpu_count():
return len(sched_getaffinity(0))

try:
n = cpu_count()
except NotImplementedError:
return 1
return n if n else 1
return psutil.cpu_count(logical=False) or psutil.cpu_count() or 1


class AutoInt(int):
Expand Down
16 changes: 4 additions & 12 deletions testing/test_plugin.py
Expand Up @@ -35,17 +35,10 @@ def test_dist_options(testdir):


def test_auto_detect_cpus(testdir, monkeypatch):
import os
import psutil
from xdist.plugin import pytest_cmdline_main as check_options

if hasattr(os, "sched_getaffinity"):
monkeypatch.setattr(os, "sched_getaffinity", lambda _pid: set(range(99)))
elif hasattr(os, "cpu_count"):
monkeypatch.setattr(os, "cpu_count", lambda: 99)
else:
import multiprocessing

monkeypatch.setattr(multiprocessing, "cpu_count", lambda: 99)
monkeypatch.setattr(psutil, "cpu_count", lambda logical=True: 99)

config = testdir.parseconfigure("-n2")
assert config.getoption("numprocesses") == 2
Expand All @@ -59,10 +52,9 @@ def test_auto_detect_cpus(testdir, monkeypatch):
assert config.getoption("numprocesses") == 0
assert config.getoption("dist") == "no"

monkeypatch.delattr(os, "sched_getaffinity", raising=False)
monkeypatch.setenv("TRAVIS", "true")
monkeypatch.setattr(psutil, "cpu_count", lambda logical=True: None)
config = testdir.parseconfigure("-nauto")
assert config.getoption("numprocesses") == 2
assert config.getoption("numprocesses") == 1


def test_boxed_with_collect_only(testdir):
Expand Down

0 comments on commit 0094b29

Please sign in to comment.