python - poner - tutorial django
¿Cómo puedo devolver la información del sistema en Python? (7)
Usando Python, ¿cómo se puede devolver información como uso de CPU, uso de memoria (gratis, usado, etc.), conteo de procesos, etc. de manera genérica para que el mismo código pueda ejecutarse en Linux, Windows, BSD, etc.?
Alternativamente, ¿cómo podría devolverse esta información en todos los sistemas anteriores con el código específico de ese sistema operativo que se ejecuta solo si ese sistema operativo es efectivamente el entorno operativo?
echa un vistazo al módulo os
En lo que respecta a multiplataforma: la mejor opción es escribir un código específico de la plataforma y luego importarlo condicionalmente. p.ej
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()
Para recursos específicos, como señala Anthony, puede acceder a /proc
en Linux. Para Windows, podría echar un vistazo en el Repositorio de Microsoft Script . No estoy seguro de dónde obtener ese tipo de información en Macs, pero puedo pensar en un gran sitio web donde puedes preguntar :-)
En un entorno Linux, puede leer desde el sistema de archivos / 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
Parece que desea obtener mucha más información de la que ofrece la biblioteca estándar de Python. Si yo fuera tú, descargaría el código fuente de ''ps'' o ''top'', o la versión de Gnome / KDE del mismo, o cualquier número de programas de monitoreo / gráficos del sistema que tengan más probabilidades de tener todo el cruce de Unix necesario bits de plataforma, ver lo que hacen y luego realizar las llamadas nativas necesarias con ctypes.
Es trivial detectar la plataforma. Por ejemplo, con ctypes puede intentar cargar libc.so, si eso arroja una excepción intente cargar ''msvcrt.dll'', etc. Sin mencionar simplemente verificar el nombre del sistema operativo con os.name. A continuación, solo delegue llamadas a su nueva API multiplataforma a la implementación específica de la plataforma (lo siento).
Cuando hayas terminado, no te olvides de subir el paquete resultante a pypi.
Recomiendo el módulo de la plataforma:
http://doc.astro-wise.org/platform.html
psutil debe proporcionar lo que necesita:
[...] biblioteca multiplataforma para recuperar información sobre procesos en ejecución y utilización del sistema (CPU, memoria, discos, red) [...]
[...] es compatible con Linux, Windows, OSX, FreeBSD y Sun Solaris, tanto en arquitecturas de 32 bits como de 64 bits [...]