[pypy-commit] pypy detect_cpu_count: (catalin_m): Updated CPU detection code in rpython/config/support.py. Now returns the actual number of available cores. Added a non-linux implementation as well. Updated test.
catalin_m
pypy.commits at gmail.com
Wed Apr 13 10:55:17 EDT 2016
Author: Catalin Gabriel Manciu <catalin.gabriel.manciu at intel.com>
Branch: detect_cpu_count
Changeset: r83650:b0229fe0397d
Date: 2016-04-13 17:45 +0300
http://bitbucket.org/pypy/pypy/changeset/b0229fe0397d/
Log: (catalin_m): Updated CPU detection code in
rpython/config/support.py. Now returns the actual number of
available cores. Added a non-linux implementation as well. Updated
test.
diff --git a/rpython/config/support.py b/rpython/config/support.py
--- a/rpython/config/support.py
+++ b/rpython/config/support.py
@@ -12,21 +12,21 @@
elif sys.platform.startswith('freebsd'):
return sysctl_get_cpu_count('/sbin/sysctl')
elif not sys.platform.startswith('linux'):
- return 1 # implement me
+ try:
+ import multiprocessing
+ return multiprocessing.cpu_count()
+ except:
+ return 1 # try to use cpu_count on other platforms or fallback to 1
try:
if isinstance(filename_or_file, str):
f = open(filename_or_file, "r")
else:
f = filename_or_file
- count = max([int(re.split('processor.*(\d+)', line)[1])
- for line in f.readlines()
- if line.startswith('processor')]) + 1
- if count >= 4:
- return max(count // 2, 3)
- else:
- return count
+ return max([int(re.split('processor.*?(\d+)', line)[1])
+ for line in f.readlines()
+ if line.startswith('processor')]) + 1 # returning the actual number of available CPUs
except:
- return 1 # we really don't want to explode here, at worst we have 1
+ return 1 # we really don't want to explode here, at worst we have 1
def sysctl_get_cpu_count(cmd, name='hw.ncpu'):
try:
diff --git a/rpython/config/test/test_support.py b/rpython/config/test/test_support.py
--- a/rpython/config/test/test_support.py
+++ b/rpython/config/test/test_support.py
@@ -45,7 +45,7 @@
saved = os.environ
try:
os.environ = FakeEnviron(None)
- assert support.detect_number_of_processors(StringIO(cpuinfo)) == 3
+ assert support.detect_number_of_processors(StringIO(cpuinfo)) == 4
assert support.detect_number_of_processors('random crap that does not exist') == 1
os.environ = FakeEnviron('-j2')
assert support.detect_number_of_processors(StringIO(cpuinfo)) == 1
More information about the pypy-commit
mailing list