Author: Catalin Gabriel Manciu <[email protected]>
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
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to