summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGiampaolo Rodola <g.rodola@gmail.com>2015-06-13 22:01:14 +0200
committerGiampaolo Rodola <g.rodola@gmail.com>2015-06-13 22:01:14 +0200
commit9c842fce61a93a8aedbfcd3e65e48c3c78926c7f (patch)
treef65ed4c85d51531ac70c6b79c39471e284cb318c
parent38266d346b28b6df6da1d9b5155a31294e812dc3 (diff)
downloadpsutil-9c842fce61a93a8aedbfcd3e65e48c3c78926c7f.tar.gz
use sysctlbyname to get cpu_count() logical and also add unit tests
-rw-r--r--psutil/_psutil_osx.c9
-rw-r--r--test/_osx.py8
2 files changed, 17 insertions, 0 deletions
diff --git a/psutil/_psutil_osx.c b/psutil/_psutil_osx.c
index 4f0ae2be..abb926b4 100644
--- a/psutil/_psutil_osx.c
+++ b/psutil/_psutil_osx.c
@@ -396,6 +396,7 @@ error:
*/
static PyObject *
psutil_cpu_count_logical(PyObject *self, PyObject *args) {
+ /*
int mib[2];
int ncpu;
size_t len;
@@ -407,6 +408,14 @@ psutil_cpu_count_logical(PyObject *self, PyObject *args) {
Py_RETURN_NONE; // mimic os.cpu_count()
else
return Py_BuildValue("i", ncpu);
+ */
+ int num;
+ size_t size = sizeof(int);
+
+ if (sysctlbyname("hw.logicalcpu", &num, &size, NULL, 2))
+ Py_RETURN_NONE; // mimic os.cpu_count()
+ else
+ return Py_BuildValue("i", num);
}
diff --git a/test/_osx.py b/test/_osx.py
index 2c088b51..3133ac66 100644
--- a/test/_osx.py
+++ b/test/_osx.py
@@ -127,6 +127,14 @@ class OSXSpecificTestCase(unittest.TestCase):
self.assertAlmostEqual(psutil.virtual_memory().wired, num,
delta=MEMORY_TOLERANCE)
+ def test_cpu_count_logical(self):
+ num = sysctl("sysctl hw.logicalcpu")
+ self.assertEqual(num, psutil.cpu_count(logical=True))
+
+ def test_cpu_count_physical(self):
+ num = sysctl("sysctl hw.physicalcpu")
+ self.assertEqual(num, psutil.cpu_count(logical=False))
+
# --- swap mem
def test_swapmem_sin(self):