Python en español

Python en español #12: Tertulia 2020-12-22


Listen Later

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:
                                                    • Javier tiene intereses muy extraños :-).

                                                    • [01:54:52] Cierre.

                                                    • [01:56:42] Final.

                                                      ...more
                                                      View all episodesView all episodes
                                                      Download on the App Store

                                                      Python en españolBy Jesús Cea


                                                      More shows like Python en español

                                                      View all
                                                      Libros para Emprendedores by Luis Ramos

                                                      Libros para Emprendedores

                                                      1,115 Listeners