Как я могу прочитать системную информацию в Python в OS X?

Следуя этому вопросу, не зависящему от ОС, в частности этот ответ, аналогичный данным, полученным от подобных / proc / meminfo в Linux, как я могу прочитать системную информацию из OS X с помощью Python (включая, помимо прочего, использование памяти).


person davidmytton    schedule 22.01.2009    source источник


Ответы (5)


Вы можете получить большой объем системной информации из утилит командной строки sysctl и _2 _ (а также ps, как в этом вопросе < / а>.)

Если вы не найдете лучшего способа, вы всегда можете вызвать их с помощью subprocess.

person dF.    schedule 22.01.2009

Единственное, что действительно хорошо доступно, доступно из модуля платформы, но оно чрезвычайно ограничено (процессор, версия ОС, архитектура и т. Д.). Для использования процессора и времени безотказной работы, я думаю, вам придется обернуть утилиты командной строки 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()
person Koen Bok    schedule 22.01.2009

Я еще немного погуглил (искал "OS X / proc") - похоже, что команда sysctl может быть тем, что вам нужно, хотя я не уверен, что она предоставит вам всю необходимую информацию. Вот страница руководства: http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man8/sysctl.8.html

Кроме того, wikipedia.

person John Fouhy    schedule 22.01.2009

Вот файл / proc fs на основе MacFUSE:

http://www.osxbook.com/book/bonus/chapter11/procfs

Если у вас есть контроль над ящиками, на которых вы запускаете свою программу Python, это может быть разумным решением. В любом случае приятно иметь возможность посмотреть на / proc!

person Mark Harrison    schedule 22.01.2009

Я искал то же самое и заметил, что на этот вопрос нет общепринятого ответа. за время, прошедшее с момента первоначального задания вопроса, был выпущен модуль 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.

person Michael Frank    schedule 20.04.2014