[pyar] kernel mata python
Fernando Pelliccioni
fpelliccioni en gmail.com
Jue Oct 13 17:38:13 ART 2016
2016-10-13 17:36 GMT-03:00 Fernando Pelliccioni <fpelliccioni en gmail.com>:
>
>
> 2016-10-12 19:51 GMT-03:00 Claudio Freire <klaussfreire en gmail.com>:
>
>> 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.
>>
>
> ¿Por qué 4x?
> El encoding interno de los strings de CPython 2.x es el mismo que el de
> las versiones 3.0, 3.1 y 3.2.
> Recién en 3.3 lo cambian a un encoding dinámico (
> https://www.python.org/dev/peps/pep-0393/).
> Tanto en CPython 2.x como en CPython < 3.3 el encoding es UCS-2 o UCS-4
> (dependiendo de como se compile el intérprete).
>
>
Perdón, reformulo:"El encoding interno de los strings *Unicode* de CPython
2.x es el mismo que el de las versiones 3.0, 3.1 y 3.2."
>
>> Deberías repensar la estructura que guardás en memoria porque
>> claramente es ineficiente. Si trabajás con números, considerá usar
>> numpy.
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20161013/78fa44f2/attachment.html>
Más información sobre la lista de distribución pyar