Как я могу вернуть системную информацию в Python?
Используя Python, можно ли возвращать информацию, такую как использование ЦП, использование памяти (бесплатно, использовать и т.д.), счетчик процессов и т.д., таким образом, чтобы один и тот же код можно было запускать в Linux, Windows, BSD и т.д.
В качестве альтернативы, как эта информация может быть возвращена во всех вышеперечисленных системах с кодом, специфичным для этой ОС, только если эта ОС действительно является операционной средой?
Ответы
Ответ 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
Ответ 3
Я рекомендую модуль платформы:
http://doc.astro-wise.org/platform.html
http://docs.python.org/library/platform.html
http://www.doughellmann.com/PyMOTW/platform/index.html
Ответ 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 и выбрать как этот и создать базовую библиотеку, которая соответствует вашим потребностям.