Python en español #12: Tertulia 2020-12-22
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.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.
<timestamp compact="1" offset="52" ts="52">[00:52 ]<topic> Seguimos hablando del bug comentado la semana pasada.</topic></timestamp>
- bug bpo35930: "Raising an exception raised in a "future"
instance will create reference cycles":
https://bugs.python.org/issue35930.
- bug bpo35930: "Raising an exception raised in a "future"
<timestamp compact="1" offset="52" ts="137">[02:17 ]<topic> El "bytecode" https://es.wikipedia.org/wiki/Bytecode
que genera Python es muy mejorable.</topic></timestamp>>>> 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.
- Inferencia de tipos:
<timestamp compact="1" offset="52" ts="512">[08:32 ]<topic> Recogida de basuras.</topic></timestamp>
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.
<timestamp compact="1" offset="52" ts="687">[11:27 ]<topic> Herramientas de monitorización:</topic></timestamp>
- DTrace: http://dtrace.org/blogs/. Monitoriza el sistema
operativo entero, incluyendo las aplicaciones, todo
integrado, de forma segura y sin modificar el software.
- DTrace: http://dtrace.org/blogs/. Monitoriza el sistema
<timestamp compact="1" offset="52" ts="812">[13:32 ]<topic> Funcionalidades de auditoría de Python:</topic></timestamp>
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/.
<timestamp compact="1" offset="52" ts="1007">[16:47 ]<topic> Más herramientas de monitorización:</topic></timestamp>
SystemTap: https://es.wikipedia.org/wiki/SystemTap.
eBPF: https://ebpf.io/.
py-spy: https://github.com/benfred/py-spy.
<timestamp compact="1" offset="52" ts="1072">[17:52 ]<topic> Más sobre DTrace
https://es.wikipedia.org/wiki/DTrace_(Sun_Microsystems) y Python:</topic></timestamp>- Añadir sondas DTrace al intérprete de Python:
https://www.jcea.es/artic/python_dtrace.htm.
- Añadir sondas DTrace al intérprete de Python:
<timestamp compact="1" offset="52" ts="1332">[22:12 ]<topic> Tracemalloc.</topic></timestamp>
- tracemalloc:
https://docs.python.org/3/library/tracemalloc.html.
- tracemalloc:
<timestamp compact="1" offset="52" ts="1382">[23:02 ]<topic> Seguimos hablando del bug comentado la semana pasada.</topic></timestamp>
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.
<timestamp compact="1" offset="52" ts="2202">[36:42 ]<topic> Aviso legal.</topic></timestamp>
- Machine learning para identificar los diferentes hablantes.
<timestamp compact="1" offset="52" ts="2307">[38:27 ]<topic> Las futuras notas de las grabaciones serán EXHAUSTIVAS
(como estáis comprobando leyendo esto :).</topic></timestamp><timestamp compact="1" offset="52" ts="2357">[39:17 ]<topic> Ideas para "cebar" las tertulias.</topic></timestamp>
- Muchos temas recurrentes, se ve que hay temas "flotando"
en el aire.
- Muchos temas recurrentes, se ve que hay temas "flotando"
<timestamp compact="1" offset="52" ts="2437">[40:37 ]<topic> Cómo organizar las tertulias, diferentes intereses y
profundidad. Dinámica de la tertulia.</topic></timestamp><timestamp compact="1" offset="52" ts="2552">[42:32 ]<topic> ¿Cómo se organizan los "core developers"?</topic></timestamp>
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.
<timestamp compact="1" offset="52" ts="3142">[52:22 ]<topic> ¡Víctor quiere más bugs para aprender!</topic></timestamp>
- Bugs marcados como "easy", como forma de entrada a
desarrolladores nuevos.
- Bugs marcados como "easy", como forma de entrada a
<timestamp compact="1" offset="52" ts="3222">[53:42 ]<topic> ¿Qué partes de CPython están escritas en C y cuáles en
Python?</topic></timestamp>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.
<timestamp compact="1" offset="52" ts="3452">[57:32 ]<topic> PyPy https://www.pypy.org/. Intérprete de Python
escrito en Python.</topic></timestamp><timestamp compact="1" offset="52" ts="3507">[58:27 ]<topic> ¿Incluir otros lenguajes en la implementación de
CPython?</topic></timestamp>