Следуя этому вопросу, не зависящему от ОС, в частности этот ответ, аналогичный данным, полученным от подобных / proc / meminfo в Linux, как я могу прочитать системную информацию из OS X с помощью Python (включая, помимо прочего, использование памяти).
Как я могу прочитать системную информацию в Python в OS X?
Ответы (5)
Вы можете получить большой объем системной информации из утилит командной строки sysctl
и _2 _ (а также ps
, как в этом вопросе < / а>.)
Если вы не найдете лучшего способа, вы всегда можете вызвать их с помощью subprocess
.
Единственное, что действительно хорошо доступно, доступно из модуля платформы, но оно чрезвычайно ограничено (процессор, версия ОС, архитектура и т. Д.). Для использования процессора и времени безотказной работы, я думаю, вам придется обернуть утилиты командной строки uptime и vm_stat.
Я построил вам один для vm_stat, другой - на ваше усмотрение ;-)
import os, sys
def memoryUsage():
result = dict()
for l in [l.split(':') for l in os.popen('vm_stat').readlines()[1:8]]:
result[l[0].strip(' "').replace(' ', '_').lower()] = int(l[1].strip('.\n '))
return result
print memoryUsage()
Я еще немного погуглил (искал "OS X / proc") - похоже, что команда sysctl может быть тем, что вам нужно, хотя я не уверен, что она предоставит вам всю необходимую информацию. Вот страница руководства: http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man8/sysctl.8.html
Кроме того, wikipedia.
Вот файл / proc fs на основе MacFUSE:
http://www.osxbook.com/book/bonus/chapter11/procfs
Если у вас есть контроль над ящиками, на которых вы запускаете свою программу Python, это может быть разумным решением. В любом случае приятно иметь возможность посмотреть на / proc!
Я искал то же самое и заметил, что на этот вопрос нет общепринятого ответа. за время, прошедшее с момента первоначального задания вопроса, был выпущен модуль Python под названием psutil:
https://github.com/giampaolo/psutil
для использования памяти вы можете использовать следующее:
>>> psutil.virtual_memory()
svmem(total=8374149120L, available=2081050624L, percent=75.1, used=8074080256L, free=300068864L, active=3294920704, inactive=1361616896, buffers=529895424L, cached=1251086336)
>>> psutil.swap_memory()
sswap(total=2097147904L, used=296128512L, free=1801019392L, percent=14.1, sin=304193536, sout=677842944)
>>>
есть функции для использования процессора, управления процессами, диска и сети. единственное упущение в модуле - это функция для получения средней нагрузки, но stdlib python имеет os.getloadavg (), если вы работаете в UNIX-подобной системе.
psutil утверждает, что поддерживает Linux, Windows, OSX, FreeBSD и Sun Solaris, но я пробовал только OSX mavericks и fedora 20.