Show More
@@ -27,9 +27,11 b' try:' | |||
|
27 | 27 | except ImportError: |
|
28 | 28 | pass |
|
29 | 29 | import os |
|
30 | import platform | |
|
30 | 31 | import re |
|
31 | 32 | import shlex |
|
32 | 33 | import shutil |
|
34 | import subprocess | |
|
33 | 35 | import sys |
|
34 | 36 | import tempfile |
|
35 | 37 | import time |
@@ -2041,6 +2043,55 b" def wrap_deprecated(func, suggest = '<nothing>'):" | |||
|
2041 | 2043 | stacklevel = 2) |
|
2042 | 2044 | return func(*args, **kwargs) |
|
2043 | 2045 | return newFunc |
|
2044 | ||
|
2045 | #*************************** end of file <genutils.py> ********************** | |
|
2046 | 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