2009-01-06 10 views
5

Tengo un script de python que puede acercarse al límite de proceso de 2 GB en Windows XP. En una máquina con 2 GB de memoria física, eso puede prácticamente bloquear la máquina, incluso si la secuencia de comandos de Python se ejecuta con una prioridad inferior a la normal.Tamaño del proceso en XP desde Python

¿Hay alguna manera en Python para descubrir mi propio tamaño de proceso?

Gracias, Gerry

+0

640 kb debería ser suficiente para todos: D –

+0

Incluso si pudiera haber una respuesta a su pregunta, es posible que desee echar un vistazo a la utilización de sus recursos. 2G es demasiado IMO – Perpetualcoder

Respuesta

2

intento:

import win32process 
print win32process.GetProcessMemoryInfo(win32process.GetCurrentProcess()) 
1

Mediante el uso de psutil https://github.com/giampaolo/psutil:

>>> import psutil, os 
>>> p = psutil.Process(os.getpid()) 
>>> p.memory_info() 
meminfo(rss=6971392, vms=47755264) 
>>> p.memory_percent() 
0.16821255914801228 
>>> 
0

En lugar de preocuparse acerca de limitar el tamaño de su proceso en tiempo de ejecución, que podría ser mejor a la figura si todos los datos que está almacenando en la memoria realmente necesitan estar en la memoria en todo momento.

Probablemente tenga mucho espacio en disco, y simplemente creando algunos archivos temporales (vea tempfile module) debe haber una amplia oportunidad de escribir cualquier dato que ya no esté utilizando para el cálculo actual en el disco. Luego puede volver a leerlo cuando/si lo necesita de nuevo. Esto es (simplísticamente) cuántas bases de datos funcionan.

Si bien el disco se considera "lento" en un sentido computacional, sigue siendo muy rápido y es una herramienta extremadamente útil cuando se trabaja con grandes conjuntos de datos. Y como ya está configurando la prioridad del proceso en "Por debajo de lo normal", no parece que la velocidad sea un problema grave para usted de todos modos, mientras que la memoria sí lo es.

Cuestiones relacionadas