Meta y Quantsight han mejorado las bibliotecas secreto en el ecosistema de Python. Hay mucho más que hacer e invitamos a la comunidad a ayudar con nuestros esfuerzos.
Veremos dos esfuerzos secreto en el ecosistema de envasado de Python para hacer que los paquetes sean más rápidos y más fáciles de usar:
- 🚀 Desbloquee el rendimiento reses para los desarrolladores a través de Python de hilo escapado, donde aprovechamos el soporte de Python 3.13 para la programación concurrente (hecho posible al eliminar el cerco de intérpretes globales (GIL)).
- ✅ Aumente la velocidad del desarrollador en el IDE con anotaciones de tipo mejoradas.
Prosperidad de la pitón escrita en la pila científica de Python
Escriba sugerencias, introducidas en Python 3.5 con PEP-484permiten a los desarrolladores especificar tipos de variables, mejorar la comprensión del código sin afectar el comportamiento de tiempo de ejecución. Los comprobantes de tipo validan estas anotaciones, ayudando a preparar errores y mejorar las funciones de IDE como autocompletar y saltar a la definición. A pesar de sus beneficios, la admisión es inconsistente en todo el ecosistema de código amplio, con enfoques variados para especificar y abastecer anotaciones tipo.
El panorama del software de código amplio se fractura con respecto a cómo se especifican, mantienen y distribuyen las anotaciones de tipo a los usuarios finales. Algunos proyectos tienen anotaciones en serie (tipos declarados directamente en el código fuente directamente), otros mantienen tipos en archivos de stub, y muchos proyectos no tienen tipos en invariable, dependiendo de repositorios de terceros como el característico para proporcionar talones mantenidos por la comunidad. Cada enfoque tiene sus propios pros y contras, pero la aplicación y mantenimiento de ellos ha sido inconsistente.
Meta y Quansight están abordando esta inconsistencia a través de:
- Contribuciones directas: Hemos mejorado la cobertura de tipo para pandas-stubs y numpy, y estamos ansiosos por expandir el esfuerzo a más paquetes.
- Compromiso comunitario: Promover los esfuerzos de anotación de tipo para alentar la décimo de la comunidad, escuchar comentarios y crear formas procesables para mejorar el ecosistema.
- Herramientas y automatización: Progreso de herramientas para invadir los desafíos comunes agregando tipos y abastecer los tipos actualizados con el código fuente.
Anotaciones de tipo mejorado en pandas
Tl; dr: Pandas es el segundo paquete más descargado de Python Scientific Stack. Mejoramos pandas-stubs Cobertura de anotación de tipo de paquete de 36% a más del 50%.
Fondo
La comunidad Pandas mantiene sus propios trozos en un repositorio separado, que debe instalarse para obtener anotaciones de tipo. Si proporcionadamente estos trozos se verifican por separado del código fuente, permite a la comunidad usar tipos con su propio tipo de comprobación e IDE.
Prosperidad de la cobertura de tipo
Cuando comenzamos nuestro trabajo en pandas-stubs, la cobertura fue de cerca de del 36%, según lo medido por el porcentaje de parámetros, retornos y atributos que tenían una anotación tipo completa (la anotación está presente y todos los genéricos tienen argumentos de tipo). Luego de varias semanas de trabajo y cerca de de 30 PR, la integridad del tipo ahora se mide en más del 50%. La mayoría de nuestras contribuciones implicaron anexar anotaciones a los parámetros previamente inyectados, anexar argumentos de tipo a tipos genéricos sin procesar y eliminar interfaces desembolsadas/indocumentadas. Además mejoramos varias anotaciones inexactas y actualizamos otras para que coincidan con las anotaciones en serie en el código fuente de Pandas.
Introducciones secreto
Dos introducciones secreto aumentan significativamente la cobertura:
- Reemplazo de Raw Serie tipos con Incógnserieun nuevo tipo seudónimo a Serie (cualquiera). Cuando se aplica a las anotaciones de tipo de retorno, esto reduce el número de tipos de comprobador falsos cuando se fuego a la función.
- Prosperidad de los tipos de operaciones de marcos de datos principales como insertar, combinar, reemplazar, transponer y asignar, así como muchas API relacionadas con la marca de tiempo y la zona temporal.
Progreso de herramientas
Por otra parte de mejorar la cobertura directamente, desarrollamos herramientas para catalogar las interfaces públicas faltantes anotaciones. Además aumentamos nuestras herramientas para calcular la cobertura de tipo para manejar la situación en la que los trozos se distribuyen de forma independiente, en espacio de ser empaquetados en la rueda de la biblioteca central.
¿Qué es Python de hilo escapado?
Python (FTP) escapado es una construcción práctico de CPython que permite que múltiples hilos interactúen con la VM en paralelo. Anteriormente, el acercamiento a la VM requería que mantuviera el cerco del intérprete general (GIL), lo que es serializando así la ejecución de los subprocesos de ejecución simultáneamente. Con el GIL se vuelve opcional, los desarrolladores podrán servirse al mayor los procesadores de múltiples núcleos y escribir un código verdaderamente paralelo.
Beneficios de la pitón de subproceso escapado
Los beneficios de la pitón de hilo escapado son numerosos:
- Cierto paralelismo en un solo proceso: Con el Gil eliminado, los desarrolladores pueden escribir el código de Python que aproveche al mayor los procesadores de múltiples núcleos sin carestia de usar múltiples procesos. El código unido a CPU puede ejecutarse en paralelo en múltiples núcleos.
- Rendimiento mejorado: Al permitir que múltiples hilos ejecuten el código de Python simultáneamente, el trabajo se puede distribuir de guisa efectiva a través de múltiples hilos internamente de un solo proceso.
- Concurrencia simplificada: Free-threading proporciona a los desarrolladores una forma más ergonómica de escribir programas paralelos en Python. Antes quedaron los días de carestia de usar multiprocesamiento.pool y/o acudir a estructuras de datos de memoria compartidas personalizadas para compartir eficientemente datos entre los procesos de trabajadores.
Preparar el ecosistema de Python para FTP
El ecosistema de los paquetes de Python debe funcionar proporcionadamente con Python de hilo escapado para que sea prácticamente útil; Los propietarios de aplicaciones no pueden usar el hilo escapado a menos que sus dependencias funcionen proporcionadamente con ella. Con ese fin, hemos estado adoptando un enfoque de «fondo» para invadir los paquetes más difíciles/populares en el ecosistema. Hemos adjunto soporte de hilo escapado Para muchos de los paquetes más populares utilizados para la computación científica (por ejemplo, Numpy, SciPy, Scikit-Learn) y las fijaciones de estilo (por ejemplo, Cython, Nanobind, Pybind, PYO3).
Acabo de comenzar
Juntos, logramos un progreso sustancial en la perfeccionamiento de las anotaciones de tipo y la compatibilidad de treinta escapado en las bibliotecas de Python. No podríamos haberlo hecho sin la comunidad de Python y estamos pidiendo a otros que se unan a nuestros esfuerzos. Si es Otras actualizaciones de los tipos de anotaciones o Preparando su código para FTP¡Valoramos su ayuda para mover el ecosistema de Python cerca de delante!
Para obtener más información sobre Meta Open Source, visite nuestro sitio de código ampliosuscríbete a nuestro Canal de youtubeo seguirnos en Facebook, Trapos, clavo y LinkedIn.