DiscoverPython en españolPython en español #14: Tertulia 2021-01-05
Python en español #14: Tertulia 2021-01-05

Python en español #14: Tertulia 2021-01-05

Update: 2021-05-08
Share

Description

Detalles internos de rendimiento de Python y exabruptos sobre asyncio https://podcast.jcea.es/python/14

Participantes:



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="92">[01:32 ]<topic> Nuevas versiones: Python 3.10a4 y Numpy.</topic></timestamp>




  • <timestamp compact="1" offset="52" ts="117">[01:57 ]<topic> Don’t Use Recursion In Python Any More,Python Closure —
    A Pythonic technique you must know</topic></timestamp>





  • <timestamp compact="1" offset="52" ts="602">[10:02 ]<topic> ¿Qué es ser "Pythónico"?</topic></timestamp>





  • <timestamp compact="1" offset="52" ts="892">[14:52 ]<topic> Python Ideas:</topic></timestamp>





  • <timestamp compact="1" offset="52" ts="1012">[16:52 ]<topic> ¿Comillas simples o comillas dobles? ' o ".</topic></timestamp>



    • Diferencias semánticas con otros lenguajes como C.




  • <timestamp compact="1" offset="52" ts="1387">[23:07 ]<topic> Tamaño de columnas: ¿80?, ¿120?, ¿132?</topic></timestamp>




  • <timestamp compact="1" offset="52" ts="1862">[31:02 ]<topic> Primar la legibilidad, no el rendimiento.</topic></timestamp>




    • Cuando tienes if ... else ..., ¿Qué caso pones primero?,
      ¿el corto o el largo? ¿Primero la condición normal?




    • Microoptimizaciones que complican la legibilidad sin
      ganancia de rendimiento que importe en realidad.






  • <timestamp compact="1" offset="52" ts="2517">[41:57 ]<topic> En las variables locales, la longitud del nombre de una
    variable no impacta en el rendimiento.</topic></timestamp>




  • <timestamp compact="1" offset="52" ts="2582">[43:02 ]<topic> Curiosear el "bytecode"
    https://es.wikipedia.org/wiki/Bytecode que genera Python.</topic></timestamp>





  • <timestamp compact="1" offset="52" ts="2782">[46:22 ]<topic> Bytecode generado para a + a:</topic></timestamp>


    >>> dis.dis(lambda a: a + a)
    1 0 LOAD_FAST 0 (a)
    2 LOAD_FAST 0 (a)
    4 BINARY_ADD
    6 RETURN_VALUE



    • ¡Guardas!




    • Sí se hacen algunas optimizaciones simples:


      >>> dis.dis(lambda : 5 + 3)
      1 0 LOAD_CONST 1 (8)
      2 RETURN_VALUE





  • <timestamp compact="1" offset="52" ts="3012">[50:12 ]<topic> Python deja su pila de evaluación vacía al terminar de
    calcular una expresión.</topic></timestamp>




    • Máquina virtual de registros en vez de máquina virtual
      orientada a pila.



      • El compilador debe ser más sofisticado, pero puede
        reutilizar valores.




    • Muchas operaciones redundantes:


      >>> 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



    • ¿Qué ocurre a la hora de depurar o para gestionar
      excepciones?






  • <timestamp compact="1" offset="52" ts="3392">[56:32 ]<topic> Que un hilo modifique variables de otro hilo.</topic></timestamp>





  • <timestamp compact="1" offset="52" ts="3517">[58:37 ]<topic> Pensábais que las interioridades del intérprete de
    Python son aburridas, pero no...</topic></timestamp>





  • <timestamp compact="0" offset="52" ts="4012">[01:06:52 ]<topic> Huevos de pascua en Python:</topic></timestamp>




    • from __future__ import braces.




    • import antigravity.




    • import this.




    • import __hello__.






  • <timestamp compact="0" offset="52" ts="4107">[01:08:27 ]<topic> Usar pass o ... (ellipsis).</topic></timestamp>





  • <timestamp compact="0" offset="52" ts="4162">[01:09:22 ]<topic> El PEP 509 no es para hacer diccionarios inmutables.</topic></timestamp>




    • Es algo interno para el API de C. No está accesible desde
      Python.




    • Cambios pequeños pueden abrir posibilidades interesantes.
      ¡Guardas!.






  • <timestamp compact="0" offset="52" ts="4387">[01:13:07 ]<topic> Curiosidades encontradas esta semana:</topic></timestamp>


00:00
00:00
1.0x

0.5x

0.8x

1.0x

1.25x

1.5x

2.0x

3.0x

Sleep Timer

Off

End of Episode

5 Minutes

10 Minutes

15 Minutes

30 Minutes

45 Minutes

60 Minutes

120 Minutes

Python en español #14: Tertulia 2021-01-05

Python en español #14: Tertulia 2021-01-05

jcea@jcea.es (Jesus Cea)