Show More
@@ -27,9 +27,11 b' try:' | |||||
27 | except ImportError: |
|
27 | except ImportError: | |
28 | pass |
|
28 | pass | |
29 | import os |
|
29 | import os | |
|
30 | import platform | |||
30 | import re |
|
31 | import re | |
31 | import shlex |
|
32 | import shlex | |
32 | import shutil |
|
33 | import shutil | |
|
34 | import subprocess | |||
33 | import sys |
|
35 | import sys | |
34 | import tempfile |
|
36 | import tempfile | |
35 | import time |
|
37 | import time | |
@@ -2042,5 +2044,54 b" def wrap_deprecated(func, suggest = '<nothing>'):" | |||||
2042 | return func(*args, **kwargs) |
|
2044 | return func(*args, **kwargs) | |
2043 | return newFunc |
|
2045 | return newFunc | |
2044 |
|
2046 | |||
2045 | #*************************** end of file <genutils.py> ********************** |
|
|||
2046 |
|
2047 | |||
|
2048 | def _num_cpus_unix(): | |||
|
2049 | """Return the number of active CPUs on a Unix system.""" | |||
|
2050 | return os.sysconf("SC_NPROCESSORS_ONLN") | |||
|
2051 | ||||
|
2052 | ||||
|
2053 | def _num_cpus_darwin(): | |||
|
2054 | """Return the number of active CPUs on a Darwin system.""" | |||
|
2055 | p = subprocess.Popen(['sysctl','-n','hw.ncpu'],stdout=subprocess.PIPE) | |||
|
2056 | return p.stdout.read() | |||
|
2057 | ||||
|
2058 | ||||
|
2059 | def _num_cpus_windows(): | |||
|
2060 | """Return the number of active CPUs on a Windows system.""" | |||
|
2061 | return os.environ.get("NUMBER_OF_PROCESSORS") | |||
|
2062 | ||||
|
2063 | ||||
|
2064 | def num_cpus(): | |||
|
2065 | """Return the effective number of CPUs in the system as an integer. | |||
|
2066 | ||||
|
2067 | This cross-platform function makes an attempt at finding the total number of | |||
|
2068 | available CPUs in the system, as returned by various underlying system and | |||
|
2069 | python calls. | |||
|
2070 | ||||
|
2071 | If it can't find a sensible answer, it returns 1 (though an error *may* make | |||
|
2072 | it return a large positive number that's actually incorrect). | |||
|
2073 | """ | |||
|
2074 | ||||
|
2075 | # Many thanks to the Parallel Python project (http://www.parallelpython.com) | |||
|
2076 | # for the names of the keys we needed to look up for this function. This | |||
|
2077 | # code was inspired by their equivalent function. | |||
|
2078 | ||||
|
2079 | ncpufuncs = {'Linux':_num_cpus_unix, | |||
|
2080 | 'Darwin':_num_cpus_darwin, | |||
|
2081 | 'Windows':_num_cpus_windows, | |||
|
2082 | # On Vista, python < 2.5.2 has a bug and returns 'Microsoft' | |||
|
2083 | # See http://bugs.python.org/issue1082 for details. | |||
|
2084 | 'Microsoft':_num_cpus_windows, | |||
|
2085 | } | |||
|
2086 | ||||
|
2087 | ncpufunc = ncpufuncs.get(platform.system(), | |||
|
2088 | # default to unix version (Solaris, AIX, etc) | |||
|
2089 | _num_cpus_unix) | |||
|
2090 | ||||
|
2091 | try: | |||
|
2092 | ncpus = max(1,int(ncpufunc())) | |||
|
2093 | except: | |||
|
2094 | ncpus = 1 | |||
|
2095 | return ncpus | |||
|
2096 | ||||
|
2097 | #*************************** end of file <genutils.py> ********************** |
General Comments 0
You need to be logged in to leave comments.
Login now