[pyar] Cargar librería una única vez corriendo muchos procesos

Claudio Freire klaussfreire en gmail.com
Jue Ago 6 18:08:48 ART 2015


2015-08-06 17:32 GMT-03:00 Matías Lang <shareman1204 en gmail.com>:
> On 06/08/15 09:44, Daniel wrote:>
>>
>> Me supera por mucho el tema del hilo pero... Hablando de video,
>> 45Mb no es una exorbitancia, ¿estas seguro que es la librería que
>> ocupa la memoria o será un buffer o algo así?
>>
>>
> Con hacer un "import cv2" o "from cv2 import X" ya usa esos 45MB.
> Después correr mi código usa unos 80MB más.


Es más que probable que esos 45MB sean bibliotecas dinámicas. En ese
caso, la memoria que ocupa, como dijeron arriba, es virtual, no
física. Las bibliotecas se "mapean" en memoria, el kernel sabe que
esos datos vienen de un archivo, y no sólo tiene permitido compartir
memoria entre procesos sino también descartar esa memoria si hiciese
falta, y luego leerla desde el disco cuando sea necesario.

En síntesis, no tenés por qué preocuparte por el peso de esas
bibliotecas si se cargan en memoria compartida.

Ahora, si esa memoria son buffers (ej: los 35MB restantes luego de
correr tu código casi seguro son buffers), esos sí se multiplican por
la cantidad de procesos.

Haciendo una prueba rápida, de esos 45MB unos 18MB son compartidos, y
el resto privados de cada proceso.


More information about the pyar mailing list