Python en español #11: Tertulia 2020-12-15
Description
En lo que sigue, cuando se habla de CPython, se refiere al
intérprete de referencia de Python, que está escrito en lenguaje
C: https://www.python.org/downloads/.
Participantes:
Eduardo Castro, email:
info@ecdesign.es. Conectando desde A
Guarda.Jesús Cea, email: jcea@jcea.es, twitter:
@jcea, https://blog.jcea.es/,
https://www.jcea.es/. Conectando desde Madrid.Javier, conectando desde Madrid.
Víctor Ramírez, twitter: @virako,
programador python y amante de vim, conectando desde Huelva.Miguel Sánchez, email:
msanchez@uninet.edu, conectando desde
Canarias.
Audio editado por Pablo Gómez, twitter:
@julebek.
La música de la entrada y la salida es "Lightning Bugs", de Jason
Shaw. Publicada en https://audionautix.com/ con licencia
- Creative Commons Attribution 4.0 International
License.
<timestamp compact="1" offset="52" ts="52">[00:52 ]<topic> Aviso de que se está grabando. Temas legales.</topic></timestamp>
<timestamp compact="1" offset="52" ts="112">[01:52 ]<topic> Valor de publicar estos audios y las dificultades para
hacerlo.</topic></timestamp><timestamp compact="1" offset="52" ts="162">[02:42 ]<topic> Métodos mágicos:</topic></timestamp>
__set_name__()
. PEP 487:
https://www.python.org/dev/peps/pep-0487/.
<timestamp compact="1" offset="52" ts="252">[04:12 ]<topic> Problemas con PIP 20.3.2:
https://github.com/pypa/pip/issues/9284.</topic></timestamp><timestamp compact="1" offset="52" ts="352">[05:52 ]<topic> ¿Actualizar a la última versión o esperar?</topic></timestamp>
Poder "echar atrás" fácil.
Acumular cambios pendientes es deuda técnica.
<timestamp compact="1" offset="52" ts="642">[10:42 ]<topic> Google caído
https://www.theguardian.com/technology/2020/dec/14/google-suffers-worldwide-outage-with-gmail-youtube-and-other-services-down.</topic></timestamp><timestamp compact="1" offset="52" ts="662">[11:02 ]<topic> Generación de wheels en varios sistemas:
https://pythonwheels.com/.</topic></timestamp>auditwheel: https://pypi.org/project/auditwheel/.
¿Generación de Wheels en Microsoft Windows?
<timestamp compact="1" offset="52" ts="792">[13:12 ]<topic> Caché local de PIP https://pip.pypa.io/en/stable/.</topic></timestamp>
<timestamp compact="1" offset="52" ts="857">[14:17 ]<topic> Event Sourcing
https://dev.to/barryosull/event-sourcing-what-it-is-and-why-its-awesome.</topic></timestamp>- Módulo eventsourcing:
https://pypi.org/project/eventsourcing/.
- Módulo eventsourcing:
<timestamp compact="1" offset="52" ts="882">[14:42 ]<topic> De momento se puede usar el viejo "resolver" de
dependencias de PIP.</topic></timestamp>Se puede usar la opción
-use-deprecated=legacy-resolver
.Esa opción se puede meter también en el fichero de
configuración, para no tener que escribirlo en cada
invocación.Jesús Cea comete el pecado de meter paquetes Python en el
sistema operativo.
<timestamp compact="1" offset="52" ts="1022">[17:02 ]<topic> Batallitas de Jesús Cea.</topic></timestamp>
Jesús lleva dos años dándole vueltas a esto: bpo35930:
"Raising an exception raised in a "future" instance will
create reference cycles":
https://bugs.python.org/issue35930.Explicación detallada del asunto.
Brainstorming.
<timestamp compact="1" offset="52" ts="1282">[21:22 ]<topic> Visión a alto nivel del recolector de basuras de
Python (cpython)</topic></timestamp>Contador de referencias. Inmediato, pero no recoge
ciclos.Si se crean instancias y no se destruyen, se llama a un
recolector "pesado" que también recoge ciclos.Esto puede ser problemático al arrancar el programa,
antes de que la creación/destrucción de objetos se
"estabilice".gc.disable()
:
https://docs.python.org/3/library/gc.html#gc.disable.
Jesús Cea "abusa" de los destructores y de que se
ejecuten cuando él quiere. Lo práctico contra lo puro.
Jesús ofrece cervezas.
gc.collect()
:
https://docs.python.org/3/library/gc.html#gc.collect. Esto
sirve tanto para recoger los ciclos como para comprobar si
tu programa tiene ciclos de memoria o no.Futures:
https://docs.python.org/3/library/concurrent.futures.html.
<timestamp compact="1" offset="52" ts="2129">[35:29 ]<topic> Módulo Manhole https://pypi.org/project/manhole/.</topic></timestamp>
Explorar un programa en producción.
Tracemalloc:
https://docs.python.org/3/library/tracemalloc.html.DTrace: http://dtrace.org/blogs/about/.
py-spy: https://pypi.org/project/py-spy/.
Pérdidas de memoria: Recordar lo hablado ya en tertulias
anteriores.jemalloc: http://jemalloc.net/.
MALLOC_PERTURB_
:
https://debarshiray.wordpress.com/2016/04/09/malloc_perturb_/.zswap: https://en.wikipedia.org/wiki/Zswap.
<timestamp compact="1" offset="52" ts="2572">[42:52 ]<topic> Micropython: https://micropython.org/.</topic></timestamp>
ESP8266: https://en.wikipedia.org/wiki/ESP8266.
ESP32: https://en.wikipedia.org/wiki/ESP32.
Bluetooth Low Energy:
https://en.wikipedia.org/wiki/Bluetooth_Low_Energy.¿Qué ventajas aporta usar Micropython?
- Velocidad de desarrollo y depuración.
<timestamp compact="1" offset="52" ts="3162">[52:42 ]<topic> ¿El futuro será mejor? O no.</topic></timestamp>
Desperdicio de recursos materiales porque realmente sobran.
Python es mucho más lento que C y no digamos ensamblador.
<timestamp compact="1" offset="52" ts="3437">[57:17 ]<topic> Cambiar Python por un lenguaje más rápido.</topic></timestamp>
Go:
https://en.wikipedia.org/wiki/Go_(programming_language).Rust:
https://en.wikipedia.org/wiki/Rust_(programming_language).C++: https://en.wikipedia.org/wiki/C%2B%2B.
<timestamp compact="1" offset="52" ts="3620">[01:00:20 ]<topic> Python no pinta nada en móviles.</topic></timestamp>
- Kivy: https://kivy.org/.
<timestamp compact="0" offset="52" ts="3727">[01:02:07 ]<topic> Acelerar Python.</topic></timestamp>
Subinterpreters: PEP 554:
https://www.python.org/dev/peps/pep-0554/.Si los subintérpretes no compartiesen NADA, se podrían
lanzar simultaneamente en varios núcleos de la CPU sin
competir por un GIL
https://en.wikipedia.org/wiki/Global_interpreter_lock
único.JIT:
<a href="https://es.wik