Escuchar "Python en español #12: Tertulia 2020-12-22"
Síntesis del Episodio
Ciclos de memoria, "core developers" y dataclasses https://podcast.jcea.es/python/12
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:
[email protected]. Conectando desde A
Guarda.
Jesús Cea, email: [email protected], 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.
Juan Carlos.
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.
[00:52] Seguimos hablando del bug comentado la semana pasada.
bug bpo35930: "Raising an exception raised in a "future"
instance will create reference cycles":
https://bugs.python.org/issue35930.
[02:17] El "bytecode" https://es.wikipedia.org/wiki/Bytecode
que genera Python es muy mejorable.
>>> import dis
>>> def suma(valores):
... s=0
... for i in valores:
... s+=i
... return s
...
>>> dis.dis(suma)
2 0 LOAD_CONST 1 (0)
2 STORE_FAST 1 (s)
3 4 LOAD_FAST 0 (valores)
6 GET_ITER
>> 8 FOR_ITER 12 (to 22)
10 STORE_FAST 2 (i)
4 12 LOAD_FAST 1 (s)
14 LOAD_FAST 2 (i)
16 INPLACE_ADD
18 STORE_FAST 1 (s)
20 JUMP_ABSOLUTE 8
5 >> 22 LOAD_FAST 1 (s)
24 RETURN_VALUE
Inferencia de tipos:
https://es.wikipedia.org/wiki/Inferencia_de_tipos.
[08:32] Recogida de basuras.
gc.set_threshold():
https://docs.python.org/3/library/gc.html#gc.set_threshold.
gc.disable():
https://docs.python.org/3/library/gc.html#gc.disable.
[11:27] Herramientas de monitorización:
DTrace: http://dtrace.org/blogs/. Monitoriza el sistema
operativo entero, incluyendo las aplicaciones, todo
integrado, de forma segura y sin modificar el software.
[13:32] Funcionalidades de auditoría de Python:
PEP 551 -- Security transparency in the Python runtime
https://www.python.org/dev/peps/pep-0551/.
PEP 578 -- Python Runtime Audit Hooks
https://www.python.org/dev/peps/pep-0578/.
[16:47] Más herramientas de monitorización:
SystemTap: https://es.wikipedia.org/wiki/SystemTap.
eBPF: https://ebpf.io/.
py-spy: https://github.com/benfred/py-spy.
[17:52] Más sobre DTrace
https://es.wikipedia.org/wiki/DTrace_(Sun_Microsystems) y Python:
Añadir sondas DTrace al intérprete de Python:
https://www.jcea.es/artic/python_dtrace.htm.
[22:12] Tracemalloc.
tracemalloc:
https://docs.python.org/3/library/tracemalloc.html.
[23:02] Seguimos hablando del bug comentado la semana pasada.
bug bpo35930: "Raising an exception raised in a "future"
instance will create reference cycles":
https://bugs.python.org/issue35930.
¡Se ofrece una caja de cervezas!
Brainstorming.
Diagnóstico detallado.
weakref — Weak references:
https://docs.python.org/3/library/weakref.html.
Se sube la apuesta a caja y media de cervezas :-).
La excepción salta en un hilo y se "transporta" y almacena
para que se pueda acceder desde otro hilo.
Test reproducible.
[36:42] Aviso legal.
Machine learning para identificar los diferentes hablantes.
[38:27] Las futuras notas de las grabaciones serán EXHAUSTIVAS
(como estáis comprobando leyendo esto :).
[39:17] Ideas para "cebar" las tertulias.
Muchos temas recurrentes, se ve que hay temas "flotando"
en el aire.
[40:37] Cómo organizar las tertulias, diferentes intereses y
profundidad. Dinámica de la tertulia.
[42:32] ¿Cómo se organizan los "core developers"?
El desarrollo se ha movido en github. Los bugs están a medio
migrar, se va a integrar más en github.
https://pyfound.blogspot.com/2020/05/pythons-migration-to-github-request-for.html
PEP 581 -- Using GitHub Issues for CPython
https://www.python.org/dev/peps/pep-0581/.
Guía del desarrollador: https://devguide.python.org/.
Backporting de bugs de cpython de la versión en desarrollo a
las versiones estables.
¿Cómo se obtiene y se pierde el status de "core developer"?
Steering council. PEP 8016:
https://www.python.org/dev/peps/pep-8016/. Rol que cumple
y cómo se elige.
Desde que Guido no es BDFL, está muy activo en listas de
correo y picando código.
[52:22] ¡Víctor quiere más bugs para aprender!
Bugs marcados como "easy", como forma de entrada a
desarrolladores nuevos.
[53:42] ¿Qué partes de CPython están escritas en C y cuáles en
Python?
Se escribe en C lo que no tiene más remedio, por rendimiento
o porque interactúa con el sistema operativo.
Más adelante de la conversación Jesús Cea explica cómo ver
si un módulo concreto está en C o en Python sin tener que ir
al código fuente.
[57:32] PyPy https://www.pypy.org/. Intérprete de Python
escrito en Python.
RPython: https://rpython.readthedocs.io/en/latest/.
[58:27] ¿Incluir otros lenguajes en la implementación de
CPython?
Rust:
https://es.wikipedia.org/wiki/Rust_(lenguaje_de_programaci%C3%B3n).
PyOxidizer: https://github.com/indygreg/PyOxidizer.
Fragmentación. Jesús Cea estoy más centrado en la parte de C
porque la mayor parte de los "core developers" no saben C.
Añadir más lenguajes reduce el grupo de gente que puede
mantener esas partes.
Portabilidad de C.
Bootstraping de un lenguaje con el propio lenguaje.
Forth:
https://en.wikipedia.org/wiki/Forth_(programming_language).
[01:05:02] Python 3.9. Mejoras.
Dificultades para utilizar la última versión de Python, en
función de lo que tenga el cliente.
[01:08:07] Dataclasses:
https://docs.python.org/3/library/dataclasses.html.
La dificultad para tener atributos opcionales. Algunas
ideas.
attrs: https://www.attrs.org/en/stable/.
Usar valores "sentinel".
DRY: https://es.wikipedia.org/wiki/No_te_repitas.
[01:20:52] Pydantic: https://pydantic-docs.helpmanual.io/.
[01:23:07] Horarios de las tertulias. Mucha discusión y algunas
ideas. De momento no habrá cambios. Hace falta más feedback.
Se agradecería que la gente que deje las tertulias,
explicase por qué se ha ido.
[01:30:27] Jesús Cea explica cómo ver si un módulo concreto está
en C o en Python sin tener que ir al código fuente.
[01:31:18] Más sobre la dinámica de las tertulias.
Debate sobre presentarse o no en tertulias abiertas, o tener
la cámara apagada.
Va siendo necesario tener algun repositorio para que la
gente de la tertulia pueda compartir cosas.
¿Lista de correo específica para las tertulias?
[01:36:42] Actas de las tertulias y publicar las grabaciones de
una puñetera vez. ¿Algún ingeniero de sonido en la sala?
¿Baratito?
[01:39:08] El "nivel" de las listas de correo. ¿Dónde están las
conversaciones interesantes? (aparte de la tertulia semanal :-).
La maldición de lo básico e "introducción a". Igual para que
haya conversación interesante, hay que hacer preguntas
interesantes :-).
Python-Madrid antes de que llegase Meetup.
Jesús Cea sugiere listas como "python-ideas":
https://mail.python.org/mailman3/lists/python-ideas.python.org/.
También la lista de programación Python en español:
python-es@python.org.
Javier tiene intereses muy extraños :-).
[01:54:52] Cierre.
[01:56:42] Final.
Más episodios del podcast Python en español
Python en español #29: Tertulia 2021-04-20
12/07/2021
Python en español #28: Tertulia 2021-04-13
29/06/2021
Python en español #27: Tertulia 2021-04-06
19/06/2021
Python en español #26: Tertulia 2021-03-30
17/06/2021
Python en español #25: Tertulia 2021-03-23
09/06/2021
Python en español #24: Tertulia 2021-03-16
07/06/2021
Python en español #23: Tertulia 2021-03-09
31/05/2021
Python en español #22: Tertulia 2021-03-02
27/05/2021
Python en español #21: Tertulia 2021-02-23
27/05/2021
Python en español #20: Tertulia 2021-02-16
22/05/2021
ZARZA Somos ZARZA, la firma de prestigio que esta detras de los grandes proyectos en tecnología de la información.