Подтвердить что ты не робот

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

Используя Python, можно ли возвращать информацию, такую ​​как использование ЦП, использование памяти (бесплатно, использовать и т.д.), счетчик процессов и т.д., таким образом, чтобы один и тот же код можно было запускать в Linux, Windows, BSD и т.д.

В качестве альтернативы, как эта информация может быть возвращена во всех вышеперечисленных системах с кодом, специфичным для этой ОС, только если эта ОС действительно является операционной средой?

4b9b3361

Ответ 1

Что касается кросс-платформенного: лучше всего написать код конкретной платформы, а затем импортировать его условно. например.

import sys
if sys.platform == 'win32':
  import win32_sysinfo as sysinfo
elif sys.platform == 'darwin':
  import mac_sysinfo as sysinfo
elif 'linux' in sys.platform:
  import linux_sysinfo as sysinfo
#etc

print 'Memory available:', sysinfo.memory_available()

Для конкретных ресурсов, как указывает Энтони, вы можете получить доступ к /proc под Linux. Для Windows вы могли бы выкарабкаться в Microsoft Script Repository. Я не уверен, где получить такую ​​информацию на компьютерах Mac, но я могу представить отличный веб-сайт, где вы могли бы спросить: -)

Ответ 2

В среде Linux вы можете читать из файловой системы /proc.

~$ cat /proc/meminfo
MemTotal:      2076816 kB
MemFree:        130284 kB
Buffers:        192664 kB
Cached:        1482760 kB
SwapCached:          0 kB
Active:         206584 kB
Inactive:      1528608 kB
HighTotal:     1179484 kB
HighFree:       120768 kB
LowTotal:       897332 kB
LowFree:          9516 kB
SwapTotal:     2650684 kB
SwapFree:      2650632 kB
Dirty:              64 kB
Writeback:          12 kB
AnonPages:       59668 kB
Mapped:          22008 kB
Slab:           200744 kB
PageTables:       1220 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:   3689092 kB
Committed_AS:   263892 kB
VmallocTotal:   114680 kB
VmallocUsed:      3604 kB
VmallocChunk:   110752 kB

Ответ 4

psutil должен предоставить то, что вам нужно:

[...] межплатформенная библиотека для извлечения информации о запущенных процессах и использовании системы (CPU, память, диски, сеть) [...]

[...] поддерживает Linux, Windows, OSX, FreeBSD и Sun Solaris, как 32-разрядные, так и 64-разрядные архитектуры [...]

Ответ 5

взгляните на os module

Ответ 6

Похоже, вы хотите получить гораздо больше информации, чем предлагает стандартная библиотека Python. Если бы я был вами, я бы загрузил исходный код для "ps" или "top", или версию Gnome/KDE того же самого, или любое количество систем мониторинга/графического мониторинга, которые, скорее всего, будут иметь все необходимые кресты Unix биты платформы, посмотреть, что они делают, а затем сделать необходимые нативные вызовы с помощью ctypes.

Это тривиально, чтобы обнаружить платформу. Например, с помощью ctypes вы можете попытаться загрузить libc.so, если это вызывает исключение, попробуйте загрузить 'msvcrt.dll' и так далее. Не говоря уже о простой проверке имени операционной системы с os.name. Затем просто делегируйте вызовы на ваш новый межплатформенный API на соответствующую конкретную платформу (извините).

Когда вы закончите, не забудьте загрузить полученный пакет в pypi.

Ответ 7

Здесь PSI (информация о системе Python) с этой целью, но они еще не покрывают Windows.

Возможно, вы можете использовать PSI и выбрать как этот и создать базовую библиотеку, которая соответствует вашим потребностям.