software.wikisort.org - Langage_de_programmation

Search / Calendar

CPython est l'implémentation de référence du langage Python et l'implémentation par défaut et la plus largement utilisée de ce langage.

Cet article est une ébauche concernant l’informatique.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

CPython

Date de première version
Dernière version 3.10.5 ()[1],[2]
Version en développement 3.8.0b3 ()[3]
Écrit en C
Système d'exploitation Multiplate-forme
Licence Python Software Foundation License[4]
Site web www.python.org

CPython peut être défini à la fois comme un interpréteur et un compilateur, car il compile le code Python en bytecode avant de l'interpréter.

Il possède une interface avec plusieurs langages, dont le C, dans laquelle il est possible d'écrire explicitement des liaisons dans un autre langage que Python.

Enfin, c'est un logiciel libre.


Plates-formes supportées


CPython fonctionne sur un très grand nombre de plates-formes :


Compatible UNIX


  • AIX
  • BSD
  • FreeBSD
  • NetBSD
  • Linux
  • OpenBSD
  • Mac OS X
  • SPARC Solaris
  • autres, IRIX par exemple

OS bureautique :


Embarqué ou spécifique


  • GP2X
  • Java VM
  • Nintendo DS
  • Palm OS
  • PlayStation 2
  • PlayStation Portable
  • Psion
  • QNX
  • Sharp Zaurus
  • Symbian OS
  • Windows CE/Pocket PC
  • Xbox et XBMC
  • VxWorks

Autres systèmes d'exploitation



Global interpreter lock


CPython utilise un verrou global pour protéger les ressources de l'interpréteur. Un programme Python ne peut donc pas tirer pleinement profit des machines multiprocesseurs à moins d'utiliser des processus séparés plutôt que des processus légers. La présence du GIL simplifie la mise en œuvre de CPython et facilite la mise en œuvre d'applications multithread qui ne bénéficient pas de l'exécution simultanée de code Python. Cependant, sans GIL, les applications de multitraitement doivent s'assurer que tout le code commun est thread-safe.[5]

Bien que de nombreuses propositions aient été faites pour éliminer le GIL, le consensus général a été que dans la plupart des cas, les avantages du GIL l'emportent sur les inconvénients ; dans les quelques cas où le GIL est un goulot d'étranglement, l'application doit être construite autour de la structure multitraitement.[6]


Extension


Il existe plusieurs méthodes pour écrire des modules d'extensions. La méthode standard consiste à écrire une bibliothèque dynamique en C qui utilise des points d'entrée de l'interpréteur CPython pour manipuler les objets[7]. Il existe également des générateurs comme SWIG ou cython qui permettent d'utiliser des langages de plus haut niveau.

Il est aussi possible d'utiliser d'autres langages que le C, par exemple Boost pour le C++ ou Pyfort pour Fortran.

À partir de Python 2.5, la bibliothèque standard inclut le module ctypes, une FFI (Foreign function interface) qui permet d'appeler directement une bibliothèque dynamique depuis du code python[8].


Implémentation du modèle objet


Les objets CPython sont créés en étendant la structure PyObject, qui contient le compteur de références, les pointeurs utilisés pour le chaînage dans le ramasse-miettes et un pointeur vers la classe de l'objet.


Gestion de la mémoire


La gestion de mémoire est faite par comptage de référence. Un ramasse-miettes est inclus depuis la version 2.0 pour résoudre les problèmes de cycles.


Notes et références


  1. (en) « Python 3.10.5 is now available », (consulté le )
  2. « https://github.com/python/cpython/releases/tag/v3.10.5 », (consulté le )
  3. « https://www.python.org/downloads/release/python-380b3/ »
  4. « https://docs.python.org/3/license.html » (consulté le )
  5. « Initialization, Finalization, and Threads », Python v3.8.3 documentation (consulté le )
  6. Jake VanderPlas, Python Data Science Handbook, O'Reilly Media, (ISBN 978-1491912058, lire en ligne)
  7. http://docs.python.org/ext/ext.html
  8. http://python.net/crew/theller/ctypes/



Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.org внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.org - проект по пересортировке и дополнению контента Википедии