Statut de chaque système de traitement Python en 2020

Le support de la série Python 2 a pris fin le 1er janvier 2020 (à l'exception de certains environnements de support à long terme). Je pense que Python est complètement passé à l'ère Python 3 et entre dans une période stable. Cependant, Python n'est pas seulement CPython. Quel est l'état actuel des autres systèmes de traitement tels que Jython et IronPython? J'étais curieux, alors j'ai fait un peu de recherche.

CPython

python-logo.png

Site officiel Dépôt

Inutile de dire que c'est le système de traitement Python original et le plus célèbre. Il est implémenté en langage C.

La fin du support (EOL) pour la série Python 2 s'est terminée le 1er janvier 2020. La dernière version, 3.8.5, est sortie le 21 juillet 2020. L'autre série 3.7 a publié 3.7.8 et la série 3.6 a publié 3.6.11 le 28 juin. La prochaine version, 3.9.0, est actuellement en version bêta finale (b5), et sortira le 5 octobre après environ deux mois de RC (Release Candidate) (Release Candidate). PEP596). Cliquez ici si vous êtes intéressé par les nouvelles fonctionnalités de 3.9 ⇒ Nouvelles fonctionnalités de Python 3.9 (Résumé)

PyPy

bitmap.png

Site officiel Dépôt

La plupart d'entre eux sont des systèmes de traitement Python implémentés en Pure Python, et se caractérisent par le fait qu'ils fonctionnent souvent plus rapidement que CPython par le compilateur JIT (Just In Time) (pas toujours plus rapide).

La dernière version est la version 7.3.1 publiée le 5 avril 2020. Deux versions, équivalentes à CPython 3.6 et équivalentes à CPython 2.7, ont été publiées. La tendance actuelle est que la branche de développement équivalente à CPython 3.7 a été supprimée et le développement se poursuit, mais la publication est indécise.

Jython

jython.png

Site officiel Dépôt

Il s'agit d'un système de traitement Python implémenté en Java et pouvant utiliser des classes telles que JDK.

La version 2.7.0 équivalente à CPython 2.7 a été publiée en mars 2015 et a été mise à jour vers la version 2.7.2 le 21 mars 2020. Cependant, en ce qui concerne la prise en charge de la série de la version 3, bien qu'un référentiel dédié soit disponible, il n'y a pas eu de commits au cours des trois dernières années. Le contributeur clé Jeff Allen a déclaré que le The Very Slow Jython Project indique qu'il est nécessaire de prendre en charge les nouvelles fonctionnalités de Python 3 et d'en concevoir et d'en implémenter de nouvelles en tenant compte de l'ancienne implémentation Jython. (: //the-very-slow-jython-project.readthedocs.io/en/latest/index.html) est en cours de lancement pour tenter de résoudre les problèmes. Comme son nom l'indique, cela est considéré comme une entreprise qui prend du temps.

Graal Python

graal.png

Dépôt

GraalVM est un système de traitement Python émergent qui s'exécute sur une machine virtuelle Java. Le but est de pouvoir utiliser la syntaxe Python 3.7 et de pouvoir utiliser SciPy et ses bibliothèques associées. Pour le moment, il est spécifié comme «expérimental». Il prend également en compte la Compatibilité avec Jython. La version 20.1.0 pour GraalVM 20 est sortie le 20 mars 2020 et la version 19.3.3 pour GraalVM 19 le 5 août 2020. Cela signifie qu'il implémente la syntaxe équivalente à Python 3.8.2. Il existe également des informations selon lesquelles JIT fonctionne car il fonctionne sur une JVM et est plus rapide que CPython ou Jython. C'est un système de traitement auquel je voudrais m'attendre pour un développement futur.

IronPython

ironpython.png

Site officiel Dépôt

Un système de traitement Python implémenté en C # qui peut utiliser les bibliothèques .NET Framework.

La dernière version est la version 2.7.10 publiée le 27 avril 2020. Il prend en charge des fonctions équivalentes à CPython 2.7. Un référentiel dédié a été créé pour la prise en charge de la série de la version 3, mais il indique clairement qu '"il n'est pas encore prêt à être utilisé". Le problème a une liste de nouvelles fonctionnalités dans Python 3, mais la quantité de travail est si énorme qu'il semble que le chemin de la sortie est encore loin.

Brython

brython.png

Site officiel Dépôt

Il s'agit d'un système de traitement Python utilisant Javascript et vous pouvez exécuter du code Python sur le navigateur. La taille de l'interpréteur (brython.js) est d'environ 700 Ko (hors bibliothèque).

La dernière version, la version 3.8.9, est sortie le 20 mars 2020, qui implémente les fonctionnalités équivalentes à 3.8 de CPython ([Seichi Operator](https: // www. In my environment). python.org/dev/peps/pep-0572/) a été confirmé pour fonctionner). On peut dire qu'il s'agit d'un projet de traitement Python vigoureux avec une vitesse de suivi rapide de la famille principale (CPython) et des commits stables.

MicroPython

micropython.png

Site officiel Référentiel

Une implémentation de sous-ensemble de Python destinée à fonctionner dans un environnement embarqué. On dit que la configuration minimale fonctionne avec 128 Ko de ROM et 8 Ko de RAM, et elle peut être exécutée sur une carte équipée d'ESP32 ou d'un pyboard dédié. Il existe également un portage vers PIC16 et Javascript.

La dernière version est la version 1.12 publiée le 20 décembre 2019. Il s'agit de l'ajout de certaines fonctionnalités de 3.5 (async / await) en plus des fonctionnalités équivalentes à CPython 3.4. Un grand nombre de problèmes ont été soumis concernant la prise en charge de diverses architectures et périphériques, et les activités actives se poursuivent.

Numba

bitmap.png

Site officiel Dépôt

Numba est un compilateur JIT pour accélérer le code Python. En particulier, l'optimisation du code utilisant des tableaux et des fonctions NumPy est envisagée.

La dernière version est la version 0.50.1 publiée le 24 juin 2020. CPython prend en charge 3.6 à 3.8, et NumPy prend en charge 1.15 à 1.18. Il y a plus de 1000 problèmes en suspens, ce qui montre les attentes élevées des personnes pour le projet (et le manque de ressources humaines). En moyenne, environ 4 à 50 commits sont effectués chaque semaine, et on peut dire que c'est un système de traitement très actif.

Cython

cython.png

Site officiel Dépôt

Cython est un système de traitement Python inhabituel. Compile le code source d'un langage d'extension propriétaire Cython qui ressemble à la syntaxe Python et génère une bibliothèque pour Python. Cela vous permet de créer des bibliothèques rapides avec moins d'effort. La dernière version du stabilisateur est sortie le 9 juillet 2020, 0.29.21. Et le 31 juillet 2020, la version alpha preview 3.0.0alpha6 de 3.0.0, qui sera la première mise à niveau majeure de la version, a été publiée. Il contient de nombreuses modifications incompatibles vers l'arrière et la syntaxe Python 3 est la valeur par défaut.

RustPython

rustpython.png

Site officiel Dépôt

Il s'agit d'un système de traitement Python implémenté dans Rust qui a démarré en 2018, et il est également possible d'intégrer Python sur l'application Rust, de compiler du code Python dans WebAssembly et de l'exécuter sur le navigateur. La dernière version est la version 0.12 publiée le 22 juin 2020. Actuellement, au moins des fonctions équivalentes à Python 3.5 sont implémentées. Il a été confirmé que la _separation des littéraux numériques tels que f-string et 1_000_000, qui est une fonction 3.6, est implémentée dans mon environnement. La notation {var =} dans 3.8 n'a pas été implémentée. C'est un système de traitement que j'ai hâte de développer à l'avenir.

Nuitka

nuitka.png

Site officiel Dépôt

Nuitka est un compilateur Python qui peut compiler le code source Python pour générer des fichiers exécutables (.exe, etc.) et des fichiers de bibliothèque pour Python (* .pyd, * .so). PyInstaller et py2exe sont célèbres dans ce domaine, mais ce sont leurs adversaires. La lecture du nom semble proche de Nuitika. Le nom vient d'Annuikta, le nom de l'épouse du créateur, Kay Hayen. La dernière version stable est la version 0.6.8.4 publiée le 6 juin 2020. Les versions de Python à compiler sont 2.6-2.7 et 3.3-3.8. Je l'ai juste essayé pendant un moment, mais j'ai pu facilement créer un fichier exécutable pour mon propre programme (y compris du code C ++). J'ai été surpris que la taille soit plus petite que ce à quoi je m'attendais.

Pyodide

(Aucun logo n'a été trouvé)

Référentiel

Un système de traitement Python spécialisé pour la direction scientifique. En utilisant la technologie WebAssembly, vous pouvez utiliser des interpréteurs et des bibliothèques Python tels que NumPy, Pandas, Matplotlib, SciPy, SymPy sur votre navigateur. Il existe une démo de type Jupyter Notebook. La dernière version est la version 0.15.0 publiée le 21 mars 2020. À ce stade, il a la fonction équivalente à CPython 3.7.4. La prochaine version, 0.16, vise la 3.8.2 (la date de sortie est indécise, mais ce n'est pas trop loin des derniers engagements). À propos, le nom vient de Py + Iodide (iodure, pour le dire simplement, la version iodée de l'oxyde). Dénomination pour être lié à Iodide Project.

Journal des modifications

Si nous trouvons des changements intéressants en 2020, nous les mettrons à jour de temps en temps.

en conclusion

Il existe des différences de vitesse entre les principaux systèmes de traitement, mais il semble que le développement se poursuit pour tous. Le support de Jython pour Python 3 semble être un peu difficile.

Il existe différents systèmes de traitement, mais comme le développement de la famille principale progresse à une vitesse fulgurante, nous pouvons avoir un aperçu de la situation actuelle où d'autres systèmes de traitement consacrent des ressources considérables pour y répondre. En plus de cela, nous devons affiner les caractéristiques uniques du système de traitement, donc je pense que les développeurs sont vraiment reconnaissants.

Si vous connaissez d'autres systèmes de traitement intéressants, veuillez nous le faire savoir dans les commentaires.

Recommended Posts

Statut de chaque système de traitement Python en 2020
Traitement de fichiers en Python
Traitement multithread en python
Traitement des requêtes en Python
Divers traitements de Python
Faites correspondre la distribution de chaque groupe en Python
Afficher le résultat du traitement de la géométrie en Python
Traitement de texte UTF8 avec python
Traitement pleine largeur et demi-largeur des données CSV en Python
Traitement asynchrone (threading) en python
Jugement d'équivalence d'objet en Python
Python: Apprentissage en profondeur dans le traitement du langage naturel: Implémentation d'un système de sélection de phrases de réponses
Post-traitement de python (NG)
Collection de traitement d'image en Python
Implémentation du tri rapide en Python
Utilisation du mode Python dans le traitement
Vérifiez le temps de traitement et le nombre d'appels pour chaque processus avec python (cProfile)
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
Créer un tableau de multiplication de chaque élément dans une feuille de calcul (Python)
traitement python3 qui semble utilisable dans paiza
Obtenez l'index de chaque élément de la matrice de confusion en Python
Manipulation des pixels d'image en Python
100 Language Processing Knock Chapitre 1 en Python
Diviser timedelta dans la série Python 2.7
Gestion des fichiers JSON en Python
Implémentation du jeu de vie en Python
Affichage de la forme d'onde audio en Python
Grammaire de base du système Python3 (dictionnaire)
La loi des nombres en python
Implémentation du tri original en Python
Brouillage réversible d'entiers en Python
Une fonction qui mesure le temps de traitement d'une méthode en python
Bases du traitement d'images binarisées par Python
Conversion de la chaîne <-> date (date, datetime) en Python
Vérifiez le comportement du destroyer en Python
Pratique d'utilisation de ceci en Python (mauvais)
Théorie générale de la relativité en Python: Introduction
Arborescence de sortie des fichiers en Python
Afficher une liste d'alphabets en Python 3
Comparaison des modules de conversion japonais en Python3
Échelle de gris par matrice-Reinventor of Python image processing-
Le résultat de l'installation de python sur Anaconda
Modèles Gang of Four (GoF) en Python
Principes de base pour exécuter NoxPlayer en Python
Grammaire de base de la série Python3 (chaîne de caractères)
Remplacement en bloc des chaînes dans les tableaux Python
Projet Euler # 16 "Somme des pouvoirs" en Python
Dessin avec Matrix-Reinventor of Python Image Processing-
Traitez facilement des images en Python avec Pillow
Résumé des méthodes intégrées, etc. de la liste Python
Utilisation d'opérateurs non logiques de ou en python
L'histoire du traitement A du blackjack (python)
Note de problèmes sur la coexistence du système Python 2/3
Exemple pratique d'architecture hexagonale en Python
Grammaire de base du système Python3 (notation incluse)
Traitement des interdictions en double dans la banque de données GAE / Python
Projet Euler # 17 "Nombre de caractères" en Python
Equation de mouvement à double pendule en python
Débarrassez-vous des images DICOM en Python
Filtrage par convolution par matrice-Reinventor of Python image processing-