From jcea en jcea.es Tue Dec 1 07:17:11 2020 From: jcea en jcea.es (Jesus Cea) Date: Tue, 1 Dec 2020 13:17:11 +0100 Subject: [Python-es] Convocatoria Tertulia Python hoy a las 19:30 Message-ID: Llevamos un par de encuentros ya, bastante interesantes. El encuentro de hoy será a las 19:30, hora de España. La duración prevista es de una hora, aunque siempre nos pasamos bastante :-) La semana pasada hablamos de cosas como cómo acelerar Python (o pseudopython), mejoras en Py_LIMITED_API en Python 3.9, Python en Windows, Guido trabajando en Microsoft, si es buena idea o no el actualizar bibliotecas y un montón de temas más. Se trata de una tertulia sin temática previa. Puedes sacar en la conversacion los temas que te interesen en este momento. Encuentro en Jitsi. Se puede usar con el ordenador y un navegador web reciente, o bien con la aplicación para móvil en Android/iOS. https://meet.jit.si/py2020 En las aplicaciones móviles, hay que unirse a la sala "py2020". **ATENCIÓN:** En este momento la sala está protegida por clave. Quitaré la clave a las 19:30. Os pediría que entraseis con vídeo aunque tengais el audio silenciado, porque hablar a una pantalla llena de recuadros negros es molesto y desconcertante. Si no hay problemas técnicos, el audio se grabará para una posible difusión futura. Entiendo que quien participe da su permiso para ser grabado y, tal vez, difundido en el futuro. ¡Nos vemos y oímos esta tarde! -- Jesús Cea Avión _/_/ _/_/_/ _/_/_/ jcea en jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz ------------ próxima parte ------------ Se ha borrado un mensaje adjunto que no está en formato texto plano... Nombre : signature.asc Tipo : application/pgp-signature Tamaño : 488 bytes Descripción: OpenPGP digital signature Url : From sarusky.saez en gmail.com Tue Dec 1 12:57:57 2020 From: sarusky.saez en gmail.com (Sara Saez) Date: Tue, 1 Dec 2020 18:57:57 +0100 Subject: [Python-es] Convocatoria Tertulia Python hoy a las 19:30 In-Reply-To: References: Message-ID: Espero llegar a tiempo!! Pero todavía tengo reunión Que tengo una duda además que preguntaros Habéis hecho páginas web con html, css y Python? S El El mar, 1 dic 2020 a las 13:18, Jesus Cea escribió: > Llevamos un par de encuentros ya, bastante interesantes. El encuentro de > hoy será a las 19:30, hora de España. La duración prevista es de una > hora, aunque siempre nos pasamos bastante :-) > > La semana pasada hablamos de cosas como cómo acelerar Python (o > pseudopython), mejoras en Py_LIMITED_API en Python 3.9, Python en > Windows, Guido trabajando en Microsoft, si es buena idea o no el > actualizar bibliotecas y un montón de temas más. > > Se trata de una tertulia sin temática previa. Puedes sacar en la > conversacion los temas que te interesen en este momento. > > Encuentro en Jitsi. Se puede usar con el ordenador y un navegador web > reciente, o bien con la aplicación para móvil en Android/iOS. > > https://meet.jit.si/py2020 > > En las aplicaciones móviles, hay que unirse a la sala "py2020". > > **ATENCIÓN:** En este momento la sala está protegida por clave. Quitaré > la clave a las 19:30. > > > Os pediría que entraseis con vídeo aunque tengais el audio silenciado, > porque hablar a una pantalla llena de recuadros negros es molesto y > desconcertante. > > Si no hay problemas técnicos, el audio se grabará para una posible > difusión futura. Entiendo que quien participe da su permiso para ser > grabado y, tal vez, difundido en el futuro. > > ¡Nos vemos y oímos esta tarde! > > -- > Jesús Cea Avión _/_/ _/_/_/ _/_/_/ > jcea en jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ > Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ > jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ > "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ > "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ > "El amor es poner tu felicidad en la felicidad de otro" - Leibniz > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcea en jcea.es Tue Dec 1 13:23:35 2020 From: jcea en jcea.es (Jesus Cea) Date: Tue, 1 Dec 2020 19:23:35 +0100 Subject: [Python-es] Convocatoria Tertulia Python hoy a las 19:30 In-Reply-To: References: Message-ID: On 1/12/20 18:57, Sara Saez wrote: > Espero llegar a tiempo!! > Pero todavía tengo reunión > Que tengo una duda además que preguntaros  > Habéis hecho páginas web con html, css y Python? > S Ya sabes que estaremos un rato largo. Conecta cuando puedas. Ya sabes que te necesito de backup :-). -- Jesús Cea Avión _/_/ _/_/_/ _/_/_/ jcea en jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz ------------ próxima parte ------------ Se ha borrado un mensaje adjunto que no está en formato texto plano... Nombre : signature.asc Tipo : application/pgp-signature Tamaño : 488 bytes Descripción: OpenPGP digital signature Url : From jcea en jcea.es Mon Dec 7 19:14:28 2020 From: jcea en jcea.es (Jesus Cea) Date: Tue, 8 Dec 2020 01:14:28 +0100 Subject: [Python-es] =?utf-8?q?Tertulia_Python=3A_mi=C3=A9rcoles_9_a_las_?= =?utf-8?q?19=3A30_=28hora_de_Madrid=29?= Message-ID: <7b6aa6f2-0a63-51ea-32dd-39ce9ffa459a@jcea.es> Esta semana la tertulia será el miércoles a las 19:30 (hora de Madrid), ya que hoy martes es festivo en España. Como siempre, la charla será en la sala "py2020" de jitsi: https://meet.jit.si/py2020 . Se puede entrar con cualquier navegador moderno. También hay aplicaciones para Android e iOS. Bloquearé la sala con clave, que retiraré a las 19:30 para permitir el aceso público. Algunos detalles: - Grabaré el audio de la conversación con vistas a una posible difusión pública posterior (tipo podcast). Entiendo que los participantes están de acuerdo en ser grabados (el audio, no grabo vídeo). Si alguien tiene pegas con esto lo puede comentar al principio de la tertulia. De todas maneras lo recordaré al empezar. - Se agradece que se entre con vídeo, aunque el sonido esté silenciado, porque hablar a una pantalla llena de recuadros negros resulta confuso y desagradable. No es imprescindible, pero es de agradecer. - A poder ser, ten el sonido silenciado si no estás hablando. Procura que tu audio tenga calidad y no meter ruído ambiente. - La tertulia no tiene tema definido más allá de hablar de Python como lenguaje. Lo más fácil es romper el hielo con algún problema o algún descubrimiento reciente con el que te hayas tropezado con el lenguaje. ¡Nos vemos el miércoles! PS: Por algún motivo en todas las tertulias se ha conectado mucha gente de Vigo y alrededores que no conoce que existe una comunidad Python importante en la ciudad, con reuniones mensuales (en pausa por el COVID-19, como todos). Se sorprenden cuando les digo que hay una cantera importante: https://www.python-vigo.es/ Lista de correo: https://lists.es.python.org/listinfo/vigo También hay comunidades fuertes de otros lenguajes y tecnologías, incluyendo grupos de electrónica y tipo makerspace. Un par cualesquiera (hay más): https://vigotech.org/ https://aindustriosa.org/ -- Jesús Cea Avión _/_/ _/_/_/ _/_/_/ jcea en jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz ------------ próxima parte ------------ Se ha borrado un mensaje adjunto que no está en formato texto plano... Nombre : OpenPGP_signature Tipo : application/pgp-signature Tamaño : 495 bytes Descripción: OpenPGP digital signature Url : From msanchez en uninet.edu Tue Dec 8 10:57:19 2020 From: msanchez en uninet.edu (Miguel Sanchez) Date: Tue, 8 Dec 2020 15:57:19 +0000 Subject: [Python-es] Duda/problema con mod_wsgi-express Message-ID: <20201208155719.33c2d089@polux.mariaonline.org> Hola Todos: He creado un entorno virtual para python 3.9, Python lo he compilado con --enable shared. En este entorno he instalado mod_wsgi 4.7.1 con pip He puesto en marcha una aplicación con mod_wsgi-express con las opciones por defecto. Hay un Apache (4.2) instalado en el servidor que usa ProxyPass y ProxyPassReverse para conectar con la aplicación. Una de las páginas que genera, contiene varios gráficos que son generados on the fly por la aplicación. La función que los genera usa principalmente: matplotlib (3.3.3), numpy (1.19.4), pandas (1.1.4), descartes (1.1.0) y pyshp (2.1.2). En función del gráfico se llama a la función con distintos parámetros. En principio todo funciona bien pero.... si las peticiones se hacen de una en una. Si le pido al servidor de forma aislada cada uno de los gráficos, se generan correctamente. Pero sin hago varias peticiones simultaneas los gráficos se generan de forma errónea. No se explicarme muy bien pero, los resultados son impredecibles. Puede que al navegador le llegue el mismo gráfico (imagen) varias veces pero con distinto nombre y/o que alguno de los gráfico esté a medio construir. Mirando el log de mi aplicación (y el del Apache) las peticiones llegan correctamente y aparentemente las respuestas salen bien. El problema no es del navegador, pues me ocurre con todos los que he probado. Es como si durante la generación de los gráficos se "mezclaran" las distintas peticiones. No tengo ni idea de por donde meterle el diente al asunto ni se muy bien que preguntarle a google. ¿Alguna sugerencia? Gracias por la ayuda. Miguel From jcea en jcea.es Wed Dec 9 12:05:11 2020 From: jcea en jcea.es (Jesus Cea) Date: Wed, 9 Dec 2020 18:05:11 +0100 Subject: [Python-es] Duda/problema con mod_wsgi-express In-Reply-To: <20201208155719.33c2d089@polux.mariaonline.org> References: <20201208155719.33c2d089@polux.mariaonline.org> Message-ID: <6ae277c9-2b60-504c-0559-891ad4543cfd@jcea.es> On 8/12/20 16:57, Miguel Sanchez wrote: > Es como si durante la generación de los gráficos se "mezclaran" las distintas peticiones. La verdad es que da la impresión de que el problema lo has diagnosticado ya tú perfectamente. Por defecto mod_wsgi procesa las peticiones en paralelo. Si el código que genera los gráficos no tiene en cuenta esto y usa estado global, pues tendrás problemas. La forma obvia de diagnosticarlo es configurar "mod_wsgi" para que acepte una sola petición por vez. Si esto resuelve el problema, entonces el problema está en tu código, que no funciona bien si hay concurrencia. Cómo resolver eso ya es problema de tu código, no de WSGI. No explicas si tienes configurado WSGI para usar multihijo y/o multiproceso. Si controlas el código, pues escribir un "driver" que genere gráficos con tu backend, pasando de WSGI. Si empiezas a pedirle que genere los gráficos en paralelo mediante hilos, seguramente te fallará igual, por lo que el problema no es WSGI. -- Jesús Cea Avión _/_/ _/_/_/ _/_/_/ jcea en jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz ------------ próxima parte ------------ Se ha borrado un mensaje adjunto que no está en formato texto plano... Nombre : OpenPGP_signature Tipo : application/pgp-signature Tamaño : 495 bytes Descripción: OpenPGP digital signature Url : From msanchez en uninet.edu Wed Dec 9 19:35:32 2020 From: msanchez en uninet.edu (Miguel Sanchez) Date: Thu, 10 Dec 2020 00:35:32 +0000 Subject: [Python-es] Duda/problema con mod_wsgi-express In-Reply-To: <6ae277c9-2b60-504c-0559-891ad4543cfd@jcea.es> References: <20201208155719.33c2d089@polux.mariaonline.org> <6ae277c9-2b60-504c-0559-891ad4543cfd@jcea.es> Message-ID: <20201209193308.58e306ca@polux.mariaonline.org> Hola Efectivamente el problema estaba donde indicabas. Estaba usando mal matplotlib. Muchas gracias El Wed, 9 Dec 2020 18:05:11 +0100 Jesus Cea dijo: > On 8/12/20 16:57, Miguel Sanchez wrote: > > Es como si durante la generación de los gráficos se "mezclaran" las distintas peticiones. > > La verdad es que da la impresión de que el problema lo has diagnosticado > ya tú perfectamente. > > Por defecto mod_wsgi procesa las peticiones en paralelo. Si el código > que genera los gráficos no tiene en cuenta esto y usa estado global, > pues tendrás problemas. > > La forma obvia de diagnosticarlo es configurar "mod_wsgi" para que > acepte una sola petición por vez. Si esto resuelve el problema, entonces > el problema está en tu código, que no funciona bien si hay concurrencia. > Cómo resolver eso ya es problema de tu código, no de WSGI. > > From jcea en jcea.es Tue Dec 15 10:24:00 2020 From: jcea en jcea.es (Jesus Cea) Date: Tue, 15 Dec 2020 16:24:00 +0100 Subject: [Python-es] Tertulia Python: Hoy martes a las 19:30 Message-ID: Hola a todos. Convoco una nueva sesión de la tertulia Python semanal. Será hoy martes a las 19:30, hora española. Como siempre, la charla será en la sala "py2020" de jitsi: https://meet.jit.si/py2020 . Se puede entrar con cualquier navegador moderno. También hay aplicaciones para Android e iOS. Bloquearé la sala con clave, que retiraré a las 19:30 para permitir el aceso público. Algunos detalles: - Grabaré el audio de la conversación con vistas a una posible difusión pública posterior (tipo podcast). Entiendo que los participantes están de acuerdo en ser grabados (el audio, no grabo vídeo). Si alguien tiene pegas con esto lo puede comentar al principio de la tertulia. De todas maneras lo recordaré al empezar. - Se agradece que se entre con vídeo, aunque el sonido esté silenciado, porque hablar a una pantalla llena de recuadros negros resulta confuso y desagradable. No es imprescindible, pero es de agradecer. - A poder ser, ten el sonido silenciado si no estás hablando. Procura que tu audio tenga calidad y no meter ruído ambiente. - La tertulia no tiene tema definido más allá de hablar de Python como lenguaje. Lo más fácil es romper el hielo con algún problema o algún descubrimiento reciente con el que te hayas tropezado con el lenguaje. -- Jesús Cea Avión _/_/ _/_/_/ _/_/_/ jcea en jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz ------------ próxima parte ------------ Se ha borrado un mensaje adjunto que no está en formato texto plano... Nombre : OpenPGP_signature Tipo : application/pgp-signature Tamaño : 495 bytes Descripción: OpenPGP digital signature Url : From gvm2121 en gmail.com Tue Dec 15 17:49:34 2020 From: gvm2121 en gmail.com (Gonzalo V) Date: Tue, 15 Dec 2020 19:49:34 -0300 Subject: [Python-es] CERTIFICACION EN PYTHON Message-ID: Buenas tardes a todos. Saben de ustedes de alguna certificación en python que sea prestigiosa? Saludos, Gonzalo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcea en jcea.es Tue Dec 15 18:07:17 2020 From: jcea en jcea.es (Jesus Cea) Date: Wed, 16 Dec 2020 00:07:17 +0100 Subject: [Python-es] =?utf-8?q?Petici=C3=B3n_de_temas_para_=22cebar=22_la?= =?utf-8?q?_tertulia?= In-Reply-To: References: Message-ID: <9fc5b2d9-f9b9-40b2-9ed0-4e2af0cb1beb@jcea.es> A medida que vamos celebrando sesiones, parece que va costando más encontrar temas que generen conversación. Se aceptan sugerencias. Lo único que pido es que se trate de Python puro, no de librerías o productos concretos. Es decir, cosas relativas al lenguaje en sí, que sirvan a cualquier programador, no una librería que si no trabajas exactamente en ese momento en ese asunto, no te sirve de nada. La idea es tener un puñado de temas iniciales para poder "cebar" la conversación y que luego evolucione sola, o para darle vidilla si decae. Algunos temas que han salido hoy, así de memoria, y que creo que han sido interesantes: - La cagada monumental de PIP 20.3.2. Si se te ha actualizado de 20.3.1 a 20.3.3, ya sabes por qué ha sido. Detalles: https://pip.pypa.io/en/stable/news/#id1 https://github.com/pypa/pip/issues/9284 - Esto dio pie a volver a un tema recurrente en encuentros anteriores: actualizar las cosas rápido cuando salen o esperar, así como estar a la última o mantenerse versiones antiguas. Muchas opiniones fundamentadas. - Volví a comentar detalles del algoritmo de resolución del pip nuevo, y ahondé en lo comentado con anterioridad de poder usar "--use-deprecated=legacy-resolver" en vez de mantenerse en un PIP antiguo. Hoy he comentado que esa configuración se puede meter en el "pip.conf" para poder olvidarnos de ella. - Al hilo de lo anterior, yo comenté que tengo en mi "/etc/pip.conf": [global] user = no Cansado de olvidarme de "sudo" al instalar paquetes a nivel de sistema operativo... - https://github.com/johnbywater/eventsourcing - Comenté el bug que tengo abierto hace dos años en los "future": https://bugs.python.org/issue35930 *** ¡¡RETO A RESOLVER PARA LA SEMANA QUE VIENE!! ;-). Si se te ocurre una solución elegante, te invito a una caja de cerveza de la buena. *** - Esto dio pie a explicar cómo funciona la recogida de basuras en Python, sobre todo el recolector de ciclos. - Esto dio a pie a explicar por qué puede ser interesante desactivar el recolector de basuras temporalmente mientras tu programa "arranca" y crea los objetos iniciales. - Se ha hablado de más técnicas y trucos para investigar "memory leaks". Este tema es recurrente, sale siempre en las tertulias. - Expliqué cómo detectar si un programa tiene ciclos de memoria (no a investigarlos y resolverlos, solo a saber si hay ciclos o no). - Algunos trucos para ver si tu problema de ocupación de memoria es cuestión de leaks o de fragmentación de memoria. - Micropython y el lugar que ocupa Python en microcontroladores. ¿No es tirar recursos? - ¿Alguien está dejando (o lo ha intentado) Python en pro de lenguajes más eficientes? Debate sobre velocidad, rendimiento y otras métricas de calidad. - Subintérpretes para utilizar todos los cores de forma simple: https://www.python.org/dev/peps/pep-0554/ - ¿Por qué Python no tiene JIT de serie?. Tema LARRRRGO. Aquí se habló de muchas cosas: numba, cython, psyco, PYPI, RPython, web assembly, tipado, especialización, pydantic, mypy, memoria transaccional. - Comenté el versionado de diccionarios para detectar cambios y, si no ha habido cambios, usar cosas cacheadas: . - PYPI es demasiado complicado y no ha conseguido ser el intérprete de referencia. - Python en móviles no pinta nada. Otro tema recurrente. -- Jesús Cea Avión _/_/ _/_/_/ _/_/_/ jcea en jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz ------------ próxima parte ------------ Se ha borrado un mensaje adjunto que no está en formato texto plano... Nombre : OpenPGP_signature Tipo : application/pgp-signature Tamaño : 495 bytes Descripción: OpenPGP digital signature Url : From msanchez en uninet.edu Wed Dec 16 06:50:31 2020 From: msanchez en uninet.edu (Miguel Sanchez) Date: Wed, 16 Dec 2020 11:50:31 +0000 Subject: [Python-es] Cotilleos Message-ID: <20201216115031.5dfd6110@polux.mariaonline.org> Hola: En relación con el error de pip: This API has been temporarily disabled due to unmanageable load and will be deprecated in the near future. Please use the Simple or JSON API instead. Es un problema técnico o un sabotaje industrial??? y por cierto... lo de Simple or JSON API cómo se usa?? Saludos desde pip 20.3.1 ;) Miguel From pych3m4 en gmail.com Thu Dec 17 04:46:16 2020 From: pych3m4 en gmail.com (Chema Cortes) Date: Thu, 17 Dec 2020 10:46:16 +0100 Subject: [Python-es] Cotilleos In-Reply-To: <20201216115031.5dfd6110@polux.mariaonline.org> References: <20201216115031.5dfd6110@polux.mariaonline.org> Message-ID: El mié, 16 dic 2020 a las 12:51, Miguel Sanchez () escribió: > Hola: > > En relación con el error de pip: > > This API has been temporarily disabled due to unmanageable load and will > be deprecated in the near future. Please use the Simple or JSON API instead. > > Es un problema técnico o un sabotaje industrial??? > En el error que da pip te lo dice: xmlrpc.client.Fault: > y por cierto... lo de Simple or JSON API cómo se usa?? > > Saludos desde pip 20.3.1 ;) > > Cuando falla el *endpoint* de XMLRPC, pip usaba https://pypi.org/simple/, lo que suponía descargas enormes en json. Lo han debido quitar de las últimas versiones de pip. Supongo que puedes volver a una versión de pip anterior y esperar a que lo arreglen. PD: con 'poetry search' parece que funcionan las búsquedas. Saludos. > Miguel > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": https://blog.ch3m4.org Buscador Python Hispano: http://busca.ch3m4.org ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From msanchez en uninet.edu Thu Dec 17 10:13:10 2020 From: msanchez en uninet.edu (Miguel Sanchez) Date: Thu, 17 Dec 2020 15:13:10 +0000 Subject: [Python-es] Cotilleos In-Reply-To: References: <20201216115031.5dfd6110@polux.mariaonline.org> Message-ID: <20201217151310.3b754e4f@polux.mariaonline.org> El Thu, 17 Dec 2020 10:46:16 +0100 Chema Cortes dijo: > > https://status.python.org/incidents/grk0k7sz6zkp > Gracias por la url, > > PD: con 'poetry search' parece que funcionan las búsquedas. ;) Saludos Miguel From msanchez en uninet.edu Thu Dec 17 10:12:48 2020 From: msanchez en uninet.edu (Miguel Sanchez) Date: Thu, 17 Dec 2020 15:12:48 +0000 Subject: [Python-es] Un problema del futuro en el presente Message-ID: <20201217151248.00825c9a@polux.mariaonline.org> Hola: Estoy haciendo pruebas de unas classes que he creado, para ver como funcionan en concurrencia. Estoy usando concurrent.futures (python 3.9.1) y no tengo mucha experiencia (ninguna) con ese módulo. He encontrado algo que no entiendo: import concurrent.futures import time def espera(): time.sleep(5) return 'fin' with concurrent.futures.ThreadPoolExecutor(max_workers=None) as executor: future_to_hazlo = {executor.submit(espera): 'la función espera'} for future in concurrent.futures.as_completed(future_to_hazlo): quien = future_to_hazlo[future] try: print(f'{quien} terminó con {future.result(3)}') except Exception as exc: print(f'{quien} ha generado una excepcion: {exc}') if future.done(): del future._exception Esto no debería lanzar una excepción TimeoutError??? Saludos y gracias por la ayuda Miguel From pych3m4 en gmail.com Thu Dec 17 14:21:51 2020 From: pych3m4 en gmail.com (Chema Cortes) Date: Thu, 17 Dec 2020 20:21:51 +0100 Subject: [Python-es] Un problema del futuro en el presente In-Reply-To: <20201217151248.00825c9a@polux.mariaonline.org> References: <20201217151248.00825c9a@polux.mariaonline.org> Message-ID: El jue, 17 dic 2020 a las 16:33, Miguel Sanchez () escribió: > Hola: > > > Estoy haciendo pruebas de unas classes que he creado, para ver como > funcionan en concurrencia. > > Estoy usando concurrent.futures (python 3.9.1) y no tengo mucha > experiencia (ninguna) con ese módulo. > > He encontrado algo que no entiendo: > > > import concurrent.futures > import time > > def espera(): > time.sleep(5) > return 'fin' > > > with concurrent.futures.ThreadPoolExecutor(max_workers=None) as executor: > future_to_hazlo = {executor.submit(espera): 'la función espera'} > for future in concurrent.futures.as_completed(future_to_hazlo): > quien = future_to_hazlo[future] > try: > print(f'{quien} terminó con {future.result(3)}') > except Exception as exc: > print(f'{quien} ha generado una excepcion: {exc}') > if future.done(): > del future._exception > > > Esto no debería lanzar una excepción TimeoutError??? > > Los *futuros* se completan en el iterador .as_completed(), y es ahí donde debería estar el timeout. Para cuando se ejecuta future.result(3) el futuro ya está resuelto y de nada sirve añadir un timeout. Saludos. > > Saludos y gracias por la ayuda > > > Miguel > > > > > _______________________________________________ > Python-es mailing list > Python-es en python.org > https://mail.python.org/mailman/listinfo/python-es > -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": https://blog.ch3m4.org Buscador Python Hispano: http://busca.ch3m4.org ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: From jcea en jcea.es Fri Dec 18 12:57:17 2020 From: jcea en jcea.es (Jesus Cea) Date: Fri, 18 Dec 2020 18:57:17 +0100 Subject: [Python-es] Erlang: The Road to the JIT In-Reply-To: References: Message-ID: Ya sé que esto es Erlang, pero me parece un artículo interesante y relevante para la tertulia del martes pasado y la discusión de por qué CPYTHON no tiene JIT de serie. https://blog.erlang.org/the-road-to-the-jit/ Tema "guardas" que comentaba en en la tertulia del martes. Las "guardas" con comprobaciones que confirman invariantes para ejecutar código optimizado. Por ejemplo, una invariante podría ser que un tipo concreto sigue siendo un entero porque antes lo fue. Ejemplo: Sea el código: """ def suma(n): s = 0 for i in range(n): s += i return s """ Python 3.9 compila este código al siguiente bytecode: """ >>> dis.dis(suma) 2 0 LOAD_CONST 1 (0) 2 STORE_FAST 1 (s) 3 4 LOAD_GLOBAL 0 (range) 6 LOAD_FAST 0 (n) 8 CALL_FUNCTION 1 10 GET_ITER >> 12 FOR_ITER 12 (to 26) 14 STORE_FAST 2 (i) 4 16 LOAD_FAST 1 (s) 18 LOAD_FAST 2 (i) 20 INPLACE_ADD 22 STORE_FAST 1 (s) 24 JUMP_ABSOLUTE 12 5 >> 26 LOAD_FAST 1 (s) 28 RETURN_VALUE """ Aquí se podrían optimizar cosas como reconocer "range", pero centrándonos en el cuerpo del bucle, se podría reconocer perfectamente que tanto "s" como "i" son enteros y operar con ellos directamente como tipos de datos en ensamblador. Estudiando el código generado, se puede ver que es muy mejorable. Por ejemplo, se podría mover la línea 16 a antes del bucle y eliminar las líneas 22 y 26, manteniendo "s" en el stack en vez de guardarlo en una variable para cargarlo inmediatamente después. De hecho se podría hasta eliminar la actualización de "s" en memoria hasta el final del bucle. También se podría prescindir de guardar el contador del bucle en la variable "i", eliminando las líneas 14 y 18. ¡El cuerpo del bucle pasaría de 5 instrucciones a una!. La única complejidad sería la gestión de excepciones: Si la suma levanta una excepción, habría que reconstruir las variables "i" y "s". La guarda se podría poner en el INPLACE_ADD, pero haciendo inferencia de tipos trivial se podría compilar a ensamblador todo el cuerpo del bucle, y la guarda sería simplemente comprobar que ni "i" ni "s" se pasan de 32/64 bits, que sería el tipo básico en ensamblador. Mientras ni "i" ni "s" se pasen de ese rango, se pueden manejar en registros de ensamblador y hacer una conversión a tipos Python al terminar el bucle. Si te pasas del rango, pues simplemente ejecutas el bytecode habitual, algo transparente para el programa. El intérprete de bytecode tiene el siguiente fragmento para ejecutar "INPLACE_ADD": """ case TARGET(INPLACE_ADD): { PyObject *right = POP(); PyObject *left = TOP(); PyObject *sum; if (PyUnicode_CheckExact(left) && PyUnicode_CheckExact(right)) { sum = unicode_concatenate(tstate, left, right, f, next_instr); /* unicode_concatenate consumed the ref to left */ } else { sum = PyNumber_InPlaceAdd(left, right); Py_DECREF(left); } Py_DECREF(right); SET_TOP(sum); if (sum == NULL) goto error; DISPATCH(); } """ Se ve una optimización cuando los operandos son unicode, pero en el caso de números el código es más complejo. El problema fundamental de Python es que técnicamente podrías capturar el "traceback" de otro hilo y examinar sus tipos locales, pero una solución evidente sería retrasar esa captura hasta que se llega al final del cuerpo del bucle (no al final del bucle, si no del cuerpo del bucle). Otro problema es la gestión de excepciones, que habría que reconstruir el traceback y los valores de variables "optimizadas". Por lo que sé, los JIT actuales de Python como NUMBA simplemente obvian este problema, normalmente suponiendo que no hay excepciones. -- Jesús Cea Avión _/_/ _/_/_/ _/_/_/ jcea en jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz ------------ próxima parte ------------ Se ha borrado un mensaje adjunto que no está en formato texto plano... Nombre : OpenPGP_signature Tipo : application/pgp-signature Tamaño : 495 bytes Descripción: OpenPGP digital signature Url : From msanchez en uninet.edu Fri Dec 18 18:33:16 2020 From: msanchez en uninet.edu (Miguel Sanchez) Date: Fri, 18 Dec 2020 23:33:16 +0000 Subject: [Python-es] Un problema del futuro en el presente In-Reply-To: References: <20201217151248.00825c9a@polux.mariaonline.org> Message-ID: <20201218233316.619138e5@polux.mariaonline.org> El Thu, 17 Dec 2020 20:21:51 +0100 Chema Cortes dijo: > Los *futuros* se completan en el iterador .as_completed(), y es ahí donde > debería estar el timeout. Para cuando se ejecuta future.result(3) el futuro > ya está resuelto y de nada sirve añadir un timeout. > Muchas gracias Chema. Tu respuesta me hizo poner el foco en donde se completan realmente los futuros y en cómo es la secuencia de sucesos desde que se crean con executor.submit hasta que finalizan. Saludos Miguel From jcea en jcea.es Tue Dec 22 10:54:33 2020 From: jcea en jcea.es (Jesus Cea) Date: Tue, 22 Dec 2020 16:54:33 +0100 Subject: [Python-es] =?utf-8?q?=5BPy-ES=5D_Petici=C3=B3n_de_temas_para_?= =?utf-8?q?=22cebar=22_la_tertulia?= In-Reply-To: References: <9fc5b2d9-f9b9-40b2-9ed0-4e2af0cb1beb@jcea.es> Message-ID: On 16/12/20 9:42, Marcos Perez wrote: > Hola, >  ¡sera por temas! > Por ejemplo: >  * emplear tipado (type hints) en un lenguaje como Python que, en > teoría, no lo necesita Tema tocado ya con frecuencia. >  * los prefijos con significado en Python (_, __, ...) Se han mencionado algunos ejemplos alguna vez, pero recordemos que mi idea es una tertulia, no charlas magistrales. Cuando se han tratado los "__" ha sido en un contexto específico, por ejemplo para crear proxies transparentes de objetos. >  * bibliotecas que deberían entrar en Python básico como "attrs" Una discusión frecuente es si es buena idea engordar o adelgazar la librería estándar. Esta conversación siempre da jugo :). >  * el operador ":=" es para mejor o para peor Ya abordado unas cuantas veces. >  * opciones de formateo del código más modernas (ancho de fila mayor de > 80 caracteres,...) Esto no lo hemos tocado, aunque es un poco periférico respecto a Python. >  * ¿Se beneficiaría Python de extensiones en WASM en lugar de en C API > nativo para que fueran más portables y no obligar a compilar en cada > entorno al instalar paquetes? Algo esotérico, pero que a mí me parecería interesante. Tampoco tiene que ser WASM, podría ser el lenguaje intermedio de LLVM o incluso una máquina abstracta diferente. > Me gustaría participar en las tertulias pero un niño me tiene muy > ocupado :-( Ya sabes dónde nos vemos cada martes :-). -- Jesús Cea Avión _/_/ _/_/_/ _/_/_/ jcea en jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz ------------ próxima parte ------------ Se ha borrado un mensaje adjunto que no está en formato texto plano... Nombre : OpenPGP_signature Tipo : application/pgp-signature Tamaño : 495 bytes Descripción: OpenPGP digital signature Url : From jcea en jcea.es Tue Dec 22 11:14:04 2020 From: jcea en jcea.es (Jesus Cea) Date: Tue, 22 Dec 2020 17:14:04 +0100 Subject: [Python-es] Tertulia python, hoy martes a las 19:30 Message-ID: Una vez más convoco una tertulia Python para hoy martes a las 19:30, hora de Madrid. Como siempre, la charla será en la sala "py2020" de jitsi: https://meet.jit.si/py2020 . Se puede entrar con cualquier navegador moderno. También hay aplicaciones para Android e iOS. Bloquearé la sala con clave, que retiraré a las 19:30 para permitir el aceso público. Algunos detalles: - Grabaré el audio de la conversación con vistas a una posible difusión pública posterior (tipo podcast). Entiendo que los participantes están de acuerdo en ser grabados (el audio, no grabo vídeo). Si alguien tiene pegas con esto lo puede comentar al principio de la tertulia. De todas maneras lo recordaré al empezar. - Se agradece que se entre con vídeo, aunque el sonido esté silenciado, porque hablar a una pantalla llena de recuadros negros resulta confuso y desagradable. No es imprescindible, pero es de agradecer. - A poder ser, ten el sonido silenciado si no estás hablando. Procura que tu audio tenga calidad y no meter ruído ambiente. - La tertulia no tiene tema definido más allá de hablar de Python como lenguaje. Lo más fácil es romper el hielo con algún problema o algún descubrimiento reciente con el que te hayas tropezado con el lenguaje. -- Jesús Cea Avión _/_/ _/_/_/ _/_/_/ jcea en jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz ------------ próxima parte ------------ Se ha borrado un mensaje adjunto que no está en formato texto plano... Nombre : OpenPGP_signature Tipo : application/pgp-signature Tamaño : 495 bytes Descripción: OpenPGP digital signature Url : From jcea en jcea.es Tue Dec 29 07:56:16 2020 From: jcea en jcea.es (Jesus Cea) Date: Tue, 29 Dec 2020 13:56:16 +0100 Subject: [Python-es] Tertulia Python, hoy martes 29 a las 19:30 Message-ID: Una vez más convoco una tertulia Python para hoy martes a las 19:30, hora de Madrid. Como siempre, la charla será en la sala "py2020" de jitsi: https://meet.jit.si/py2020 . Se puede entrar con cualquier navegador moderno. También hay aplicaciones para Android e iOS. Bloquearé la sala con clave, que retiraré a las 19:30 para permitir el aceso público. Algunos detalles: - Grabaré el audio de la conversación con vistas a una posible difusión pública posterior (tipo podcast). Entiendo que los participantes están de acuerdo en ser grabados (el audio, no grabo vídeo). Si alguien tiene pegas con esto lo puede comentar al principio de la tertulia. De todas maneras lo recordaré al empezar. - Se agradece que se entre con vídeo, aunque el sonido esté silenciado, porque hablar a una pantalla llena de recuadros negros resulta confuso y desagradable. No es imprescindible, pero es de agradecer. - A poder ser, ten el sonido silenciado si no estás hablando. Procura que tu audio tenga calidad y no meter ruído ambiente. - La tertulia no tiene tema definido más allá de hablar de Python como lenguaje. Lo más fácil es romper el hielo con algún problema o algún descubrimiento reciente con el que te hayas tropezado con el lenguaje. -- Jesús Cea Avión _/_/ _/_/_/ _/_/_/ jcea en jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz ------------ próxima parte ------------ Se ha borrado un mensaje adjunto que no está en formato texto plano... Nombre : OpenPGP_signature Tipo : application/pgp-signature Tamaño : 495 bytes Descripción: OpenPGP digital signature Url : From jcea en jcea.es Tue Dec 29 10:03:49 2020 From: jcea en jcea.es (Jesus Cea) Date: Tue, 29 Dec 2020 16:03:49 +0100 Subject: [Python-es] Resumen de la tertulia del 22 de diciembre Message-ID: <20c9b38b-ccc9-2614-c051-7488a0967e1f@jcea.es> Revisando la grabación en diagonal, los temas que se trataron la semana pasada fueron: * Algunas flores. ¡Gracias! * Puesta en común de los (falta de) avances en el bug https://bugs.python.org/issue35930 "Raising an exception raised in a "future" instance will create reference cycles". Hay una caja de cervezas de premio. Visto la falta de progreso :-), se sube el premio a caja y media de cervezas. SPOILER: Esta semana he solucionado el problema. Daré detalles esta tarde :-). Mira los gráficos adjuntos a este mensaje. * El compilador de Python podría generar bytecode mejor. Se podrían hacer muchos avances ahí. * Algunos detalles y trucos sobre la recogida de basuras de Python. * Instrumentalización del intérprete con dtrace y systemtap. * Estudio del arranque de un programa Python, antes de entrar en el bucle principal. * 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/ * eBPF: https://ebpf.io/ . Como dtrace (o mejor), pero en Linux. Empezando. Algo offtopic. * py-spy: https://github.com/benfred/py-spy * Tracemalloc. * Se vuelve a hablar de https://bugs.python.org/issue35930 "Raising an exception raised in a "future" instance will create reference cycles". Se discutió mucho sobre el asunto. La gente quería ganarse la caja de cervezas. * Weakref. * "Transporte" de excepciones entre hilos. * Mi vaguería a crear un test 100% reproducible cuando hay "condiciones de carrera" en juego. Tirón de orejas. * Identificar a los hablantes de la tertulia. Molaría que alguien se currase un machine learning para esto :-). * Planes varios relativos a publicar las grabaciones de las tertulias. * Discusión sobre la dinámica de la tertulia, nivel de profundidad, repetir temas al cambiar la composición de los contertulios, horarios. * ¿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. - - PEP 581 -- Using GitHub Issues for CPython . * 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: . 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. * Bugs marcados como "easy", como forma de entrada a desarrolladores nuevos. * CPYTHON: Código en C y código en Python. ¿Qué está escrito en cada lenguage y por qué?. Más adelante de la conversación explico cómo ver si un módulo concreto está en C o en Python sin tener que ir al código fuente. * PYPI: La idea original era escribir un intérprete de Python en Python (reducido). * ¿Uso de otros lenguajes en el intérprete de Python, como Rust?. Fragmentación de lenguajes en el intérprete. Heredar código ajeno en lenguajes raro. * Algunos "core developers" estamos más centrados en la parte de C porque ahí hay menos gente y tambien necesita cariño. * Futuro de Rust. * Portabilidad de C. * Bootstraping de un lenguaje con el propio lenguaje. * Algunas mejoras de Python 3.9 y el problema de no poder trabajar con la última versión de Python. * "Dataclasses" y la dificultad para tener atributos opcionales. Algunas ideas. * 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. * 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. * Actas de las tertulias y publicar las grabaciones de una puñetera vez. ¿Algún ingeniero de sonido en la sala? ¿Baratito? * 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 :-). Sugiero listas como "python-ideas": . También la lista de programación Python en español: . -- Jesús Cea Avión _/_/ _/_/_/ _/_/_/ jcea en jcea.es - https://www.jcea.es/ _/_/ _/_/ _/_/ _/_/ _/_/ Twitter: @jcea _/_/ _/_/ _/_/_/_/_/ jabber / xmpp:jcea en jabber.org _/_/ _/_/ _/_/ _/_/ _/_/ "Things are not so easy" _/_/ _/_/ _/_/ _/_/ _/_/ _/_/ "My name is Dump, Core Dump" _/_/_/ _/_/_/ _/_/ _/_/ "El amor es poner tu felicidad en la felicidad de otro" - Leibniz ------------ próxima parte ------------ Se ha borrado un mensaje adjunto que no está en formato texto plano... Nombre : ANTES.png Tipo : image/png Tamaño : 131687 bytes Descripción: no disponible Url : ------------ próxima parte ------------ Se ha borrado un mensaje adjunto que no está en formato texto plano... Nombre : DESPUÉS.png Tipo : image/png Tamaño : 99239 bytes Descripción: no disponible Url : ------------ próxima parte ------------ Se ha borrado un mensaje adjunto que no está en formato texto plano... Nombre : OpenPGP_signature Tipo : application/pgp-signature Tamaño : 495 bytes Descripción: OpenPGP digital signature Url :