Commit 530523ba authored by dnj@chromium.org's avatar dnj@chromium.org

Add cross-platform resilience to gclient CPU count probe.

BUG=chromium:444597

Review URL: https://codereview.chromium.org/819133003

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@293549 0039d316-1c4b-4281-b951-d872f2087c98
parent 64e14364
......@@ -1141,15 +1141,32 @@ def ParseCodereviewSettingsContent(content):
def NumLocalCpus():
"""Returns the number of processors.
Python on OSX 10.6 raises a NotImplementedError exception.
multiprocessing.cpu_count() is permitted to raise NotImplementedError, and
is known to do this on some Windows systems and OSX 10.6. If we can't get the
CPU count, we will fall back to '1'.
"""
# Surround the entire thing in try/except; no failure here should stop gclient
# from working.
try:
import multiprocessing
return multiprocessing.cpu_count()
except: # pylint: disable=W0702
# Mac OS 10.6 only
# pylint: disable=E1101
return int(os.sysconf('SC_NPROCESSORS_ONLN'))
# Use multiprocessing to get CPU count. This may raise
# NotImplementedError.
try:
import multiprocessing
return multiprocessing.cpu_count()
except NotImplementedError: # pylint: disable=W0702
# (UNIX) Query 'os.sysconf'.
# pylint: disable=E1101
if hasattr(os, 'sysconf') and 'SC_NPROCESSORS_ONLN' in os.sysconf_names:
return int(os.sysconf('SC_NPROCESSORS_ONLN'))
# (Windows) Query 'NUMBER_OF_PROCESSORS' environment variable.
if 'NUMBER_OF_PROCESSORS' in os.environ:
return int(os.environ['NUMBER_OF_PROCESSORS'])
except Exception as e:
logging.exception("Exception raised while probing CPU count: %s", e)
logging.debug('Failed to get CPU count. Defaulting to 1.')
return 1
def DefaultDeltaBaseCacheLimit():
"""Return a reasonable default for the git config core.deltaBaseCacheLimit.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment