# HG changeset patch # User Paul Boddie # Date 1482166521 -3600 # Node ID eaaedc7eaf626a8a0f78660c5a43f815091d1002 # Parent 9741c489a8df470b664765ab1064b28b62646d2b Added support for counting CPU cores on Mac OS X. diff -r 9741c489a8df -r eaaedc7eaf62 pprocess.py --- a/pprocess.py Mon Dec 19 17:53:25 2016 +0100 +++ b/pprocess.py Mon Dec 19 17:55:21 2016 +0100 @@ -1050,6 +1050,24 @@ finally: f.close() +_system_profiler_field = "Total Number of Cores:" + +def _get_number_of_cores_macosx(): + + "Return the number of cores for Mac OS X." + + f = os.popen("/usr/sbin/system_profiler -detailLevel full SPHardwareDataType") + try: + for line in f.xreadlines(): + line = line.strip() + if line.startswith(_system_profiler_field): + return int(line[len(_system_profiler_field):].strip()) + + return None + + finally: + f.close() + # Low-level functions. def create_socketpair(): @@ -1094,9 +1112,14 @@ os.close(cw) return Channel(pid, os.fdopen(pr, "r", 0), os.fdopen(pw, "w", 0)) +# Configure the interprocess communications and core-counting functions. + if platform.system() == "SunOS": create = create_pipes get_number_of_cores = _get_number_of_cores_solaris +elif platform.system() == "Darwin": + create = create_socketpair + get_number_of_cores = _get_number_of_cores_macosx else: create = create_socketpair get_number_of_cores = _get_number_of_cores