VM Python
Un article de Haypo.
(Différences entre les versions)
Version du 17 juillet 2012 à 21:34 (modifier) Haypo (Discuter | Contributions) (→Optimiser Python) ← Différence précédente |
Version du 17 juillet 2012 à 21:39 (modifier) (défaire) Haypo (Discuter | Contributions) Différence suivante → |
||
Ligne 26 : | Ligne 26 : | ||
* [http://www.parrotcode.org/ Parrot] : Machine virtuelle en développement qui sera utilisée pour exécuter du Perl6 ou Python | * [http://www.parrotcode.org/ Parrot] : Machine virtuelle en développement qui sera utilisée pour exécuter du Perl6 ou Python | ||
- | == | + | == Sous-ensemble de Python vers C ou C++ == |
* [[Cpp|C++]] : [http://code.google.com/p/shedskin/ Shedskin] (voir aussi le [http://shed-skin.blogspot.com/ blog de son auteur]) | * [[Cpp|C++]] : [http://code.google.com/p/shedskin/ Shedskin] (voir aussi le [http://shed-skin.blogspot.com/ blog de son auteur]) | ||
Ligne 34 : | Ligne 34 : | ||
* [[C]] : [http://code.google.com/p/unpython/ unpython] | * [[C]] : [http://code.google.com/p/unpython/ unpython] | ||
- | == | + | == Pseudo-Python vers C == |
+ | |||
+ | * [http://www.cython.org/ Cython] "Cython is a programming language based on Python, with extra syntax allowing for optional static type declarations.". Cython est basé sur [http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/ pyrex]. | ||
+ | |||
+ | == Sous-ensemble de Python == | ||
* [http://copperhead.github.com/ Copperhead] : Python vers GPU (Nvidia) | * [http://copperhead.github.com/ Copperhead] : Python vers GPU (Nvidia) | ||
* [http://code.google.com/p/numexpr/ numexpr] : "The numexpr package evaluates multiple-operator array expressions many times faster than NumPy can." | * [http://code.google.com/p/numexpr/ numexpr] : "The numexpr package evaluates multiple-operator array expressions many times faster than NumPy can." | ||
- | |||
- | == Compiler Python en un binaire (Windows / Unix) == | ||
- | |||
- | Il est possible de compiler un script Python pour produire un programme binaire. | ||
- | * Créer un binaire Windows (PE) | ||
- | ** [http://www.py2exe.org/ Py2exe] | ||
- | ** [http://starship.python.net/crew/atuining/cx_Freeze/ cx_Freeze] | ||
- | * Créer un binaire Unix (ELF) | ||
- | ** [http://wiki.python.org/moin/Freeze freeze.py] : Inclut dans Python apparement (?) | ||
== Autres == | == Autres == | ||
Ligne 56 : | Ligne 51 : | ||
Outils ou articles traitant de l'optimisation de Python : | Outils ou articles traitant de l'optimisation de Python : | ||
- | * [http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/ pyrex] : Compilateur permettant de mélanger du code C et du code Python si j'ai bien compris (?) | ||
* [http://pyinline.sourceforge.net/ PyInline] permet d'ajouter du code source dans un autre langage directement dans un programme C, et de manière transparente. | * [http://pyinline.sourceforge.net/ PyInline] permet d'ajouter du code source dans un autre langage directement dans un programme C, et de manière transparente. | ||
* [http://www.python.org/doc/essays/list2str.html list2str] : Petit histoire sur l'optimisation (en Python uniquement) d'une fonction très simple expliquant pourquoi ça va plus vite d'une version à l'autre de la fonction. | * [http://www.python.org/doc/essays/list2str.html list2str] : Petit histoire sur l'optimisation (en Python uniquement) d'une fonction très simple expliquant pourquoi ça va plus vite d'une version à l'autre de la fonction. | ||
* [http://sourceforge.net/projects/py2cmod/ py2cmod] : Outil permettant de convertir un module Python en code C, ce qui permet de créer des versions plus performante | * [http://sourceforge.net/projects/py2cmod/ py2cmod] : Outil permettant de convertir un module Python en code C, ce qui permet de créer des versions plus performante | ||
* [http://www.scipy.org/documentation/weave/ weave] : outil permettant d'inclure du code C/C++ dans du code Python | * [http://www.scipy.org/documentation/weave/ weave] : outil permettant d'inclure du code C/C++ dans du code Python | ||
+ | |||
+ | == Compiler Python en un binaire (Windows / Unix) == | ||
+ | |||
+ | Pour distribuer plus facilement Python, il est possible de combiner l'interprète CPython et le bytecode du projet dans un seul programme binaire. | ||
+ | |||
+ | Binaire Windows (PE) : | ||
+ | * [http://www.py2exe.org/ Py2exe] | ||
+ | * [http://starship.python.net/crew/atuining/cx_Freeze/ cx_Freeze] | ||
+ | |||
+ | Binaire Unix (ELF) | ||
+ | * [http://wiki.python.org/moin/Freeze freeze.py] : Inclut dans Python apparement (?) | ||
== Articles connexes == | == Articles connexes == | ||
* '''[[Python]]''' — '''[[FAQ Python]]''' — '''[[Python graphique]]''' — '''[[Installer des modules Python]]''' — '''[[Python ou rien]]''' — [[pypy]] | * '''[[Python]]''' — '''[[FAQ Python]]''' — '''[[Python graphique]]''' — '''[[Installer des modules Python]]''' — '''[[Python ou rien]]''' — [[pypy]] |
Version du 17 juillet 2012 à 21:39
Python est un langage. On peut compiler du Python pour donner du code machine i386, mais on peut aussi en faire du bytecode Java, ou plus couramment du bytecode pour la machine virtuelle CPython (l'interpréteur le plus connu).
Sommaire |
VM
Voici donc une liste de machines virtuelles permettant d'exécuter du Python :
- pypy : Implémentation de Python codée en Python qui se veut aussi rapide que l'implémentation en C, voir même plus en utilisant une analyse dynamique du code ...
- Jython : Exécution dans une Java Virtual Machine (JVM, voir Java). Voir aussi le projet Jpype qui permet d'utiliser du Java dans Python.
- IronPython : Dans une plateforme .NET avec intégration du Common Language Runtime (CLR)
- Stackless Python
- Hotpy et Hotpy 2: built using the GVMT (The Glasgow Virtual Machine Toolkit)
JIT
- Numba
- pymothoa utilise LLVM; "don't support classes nor exceptions."
- Unladen Swallow: fork de CPython 2.6 utilisant LLVM, n'est plus maintenu. Lire Unladen Swallow Retrospective et la PEP 3146.
- psyco: n'est plus maintenu.
Voir aussi :
- Parrot : Machine virtuelle en développement qui sera utilisée pour exécuter du Perl6 ou Python
Sous-ensemble de Python vers C ou C++
- C++ : Shedskin (voir aussi le blog de son auteur)
- C++ : Python2C, petit script très limité qui vise à convertir un script Python en C++
- C++ : Nuitka (voir la conférence à EuroPython 2012)
- C++ : pythran (voir aussi le journal linuxfr)
- C : unpython
Pseudo-Python vers C
- Cython "Cython is a programming language based on Python, with extra syntax allowing for optional static type declarations.". Cython est basé sur pyrex.
Sous-ensemble de Python
- Copperhead : Python vers GPU (Nvidia)
- numexpr : "The numexpr package evaluates multiple-operator array expressions many times faster than NumPy can."
Autres
- copperhead: GPU
- Perthon : Python vers Perl
Optimiser Python
Outils ou articles traitant de l'optimisation de Python :
- PyInline permet d'ajouter du code source dans un autre langage directement dans un programme C, et de manière transparente.
- list2str : Petit histoire sur l'optimisation (en Python uniquement) d'une fonction très simple expliquant pourquoi ça va plus vite d'une version à l'autre de la fonction.
- py2cmod : Outil permettant de convertir un module Python en code C, ce qui permet de créer des versions plus performante
- weave : outil permettant d'inclure du code C/C++ dans du code Python
Compiler Python en un binaire (Windows / Unix)
Pour distribuer plus facilement Python, il est possible de combiner l'interprète CPython et le bytecode du projet dans un seul programme binaire.
Binaire Windows (PE) :
Binaire Unix (ELF)
- freeze.py : Inclut dans Python apparement (?)