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
changes/01/332501/1
dnj@chromium.org 11 years ago
parent 64e1436432
commit 530523ba19

@ -1141,15 +1141,32 @@ def ParseCodereviewSettingsContent(content):
def NumLocalCpus(): def NumLocalCpus():
"""Returns the number of processors. """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: try:
import multiprocessing # Use multiprocessing to get CPU count. This may raise
return multiprocessing.cpu_count() # NotImplementedError.
except: # pylint: disable=W0702 try:
# Mac OS 10.6 only import multiprocessing
# pylint: disable=E1101 return multiprocessing.cpu_count()
return int(os.sysconf('SC_NPROCESSORS_ONLN')) 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(): def DefaultDeltaBaseCacheLimit():
"""Return a reasonable default for the git config core.deltaBaseCacheLimit. """Return a reasonable default for the git config core.deltaBaseCacheLimit.

Loading…
Cancel
Save