[pyar] kernel mata python

Claudio Freire klaussfreire en gmail.com
Mie Oct 12 19:51:25 ART 2016


2016-10-12 12:03 GMT-03:00 Javier Marcon <javiermarcon en gmail.com>:
>> Por otro lado, ¿cómo estás trabajando el CSV? Si lo leés y laburás
>> linea por linea no deberías tener problema de memoria... ¿Se puede ver
>> qué estás haciendo?
>>
>> Slds.
>>
> No puedo poner el código por el contrato de confidencialidad, pero lo
> que hace es leer el csv y arma varias listas, una lista que por cada
> fila del csv tiene una lista de los valores de la fila, una lista con
> los encabezados, una lista de keys de fila, etc.

Sin código va a ser difícil ayudarte, pero si te ponés a pensar, con
un input de 200MB tendrías que estar inflando muchísimo en memoria los
datos para estar teniendo problemas con el OOM - eso, o estás
laburando en una máquina demasiado chica.

Si estás laburando en python 2, recordá que los strings unicode pesan
4x lo normal debido al encoding interno. Podés ahorrar mucha memoria
guardando byte strings en vez de unicode (ej: x.encode("utf8") al
ponerlo en la lista, y x.decode("utf8") al sacarlo de la lista). Es un
laburo, pero te puede mejorar la eficiencia notablemente.

En python 3, desde cierta versión (creo que 3.4), ésto es automático.

Deberías repensar la estructura que guardás en memoria porque
claramente es ineficiente. Si trabajás con números, considerá usar
numpy.


Más información sobre la lista de distribución pyar