Red de conocimiento informático - Material del sitio web - Cómo usar Python para controlar dinámicamente el porcentaje de uso de memoria de un sistema Linux

Cómo usar Python para controlar dinámicamente el porcentaje de uso de memoria de un sistema Linux

¿Cómo utilizar Python para controlar dinámicamente el porcentaje de uso de memoria de un sistema Linux?

Recientemente, algunos internautas pidieron ayuda en línea: ¿Cómo controlar dinámicamente el porcentaje de uso de memoria de los sistemas Linux a través de scripts? Después de algunas depuraciones escritas por Baidu+, finalmente completé el trabajo preliminar de controlar dinámicamente el porcentaje de uso de memoria del sistema Linux. Lo escribo ahora, con la esperanza de ayudar a más amigos.

1 Prefacio

El porcentaje de uso de memoria del sistema Linux se controla dinámicamente según las necesidades. Por ejemplo, el uso de memoria actual es del 30% si el uso de memoria se establece en. 70%, debe solicitar memoria para lograr el objetivo de ocupación del 70%; si cae al 40%, es necesario liberar algunas aplicaciones de memoria. De hecho, la esencia de los scripts es la aplicación dinámica y la liberación de memoria.

Nota: Debido a que los scripts de Python ocupan una cierta cantidad de memoria antes de ejecutarse, no puede establecer el uso de memoria por debajo de este porcentaje.

2 Solicitud de memoria dinámica

Al consultar información y usar Python para solicitar dinámicamente bloques de memoria, puede usar la función en el paquete ctypes e importar el paquete.

>>> from ctypes import *

>>> mem= create_string_buffer(1024)

Descripción: Utilice la función create_string_buffer() para solicitar memoria, que Solicita un bloque de memoria de 1024 bytes.

A continuación se muestran los cambios antes y después de aplicar 100 MB de memoria

Como se muestra en la siguiente figura antes de la aplicación:

Utilice el siguiente código:

>> >mem=create_string_buffer(104857600)

Como se muestra a continuación después de la aplicación:

Como se muestra a continuación después de la aplicación:

De las dos imágenes de arriba , Se puede ver que el uso de memoria antes de la solicitud de memoria es de 295 MB y después de la solicitud de 397 MB, el uso de memoria ha aumentado en aproximadamente 100 MB.

3 Liberación de memoria dinámica

Dado que Python tiene un mecanismo de recolección de basura de memoria, se utiliza el recuento de referencias de objetos. Cuando el recuento de referencias de un objeto llega a 0, el GC se activa, que es el principio utilizado aquí.

El código es el siguiente:

>>> mem=None

El consumo de memoria después del lanzamiento es el que se muestra a continuación:

Huella de memoria El espacio se reduce de 397 MB a 297 MB, liberando 100 MB de espacio de memoria.

Descripción: Después de asignar Ninguno al objeto mem, el recuento de referencia del objeto mem es 0 y luego se inicia la recolección de basura para liberar la memoria ocupada por el objeto mem.

4 Detectar la cantidad total de memoria del sistema y la memoria ocupada

Dado que necesitamos establecer el porcentaje de memoria ocupada, necesitamos obtener la cantidad total de memoria física del sistema y la memoria ocupada . El método utilizado en este artículo es leer el archivo del sistema "/proc/meminfo", a partir del cual se puede analizar el tamaño total de la memoria, el tamaño de la ocupación actual de la memoria y otra información relacionada con la memoria. El formato del archivo es el siguiente:

El fragmento de código es el siguiente:

f = open("/proc/meminfo")

líneas = f. readlines()

f.close()

para línea en líneas:

if len(line) <(line) = f.readlines()

if len(línea) <(línea):