CPython

Z Wikipedie, otevřené encyklopedie
Skočit na navigaci Skočit na vyhledávání
Tento článek pojednává o referenční implementaci Pythonu. Možná hledáte: Cython (Programovací jazyk odvozený od Pythonu).
CPython
Logo
Fibonnacci-Python.png
VývojářGuido van Rossum
Aktuální verze3.10.0 (4. října 2021)
Operační systémmultiplatformní software
PlatformaMicrosoft Windows
Vyvíjeno vC
Typ softwaruimplementation of a programming language, referenční implementace, interpret a svobodný a otevřený software
LicencePython Software Foundation License
Webwww.python.org
Některá data mohou pocházet z datové položky.

CPython je referenční implementace programovacího jazyka Python. Je napsaný v jazyce C a částečně v samotném Pythonu. Protože jde zároveň o implementaci nejrozšířejnější, bývá často nazývána stručně Python.[1]

CPython lze popsat jako interpret a překladač zároveň, neboť kód před spuštěním nejprve přeloží do bajtkódu, který následně interpretuje. Nabízí rozhraní pro volání funkcí napsaných v několika jiných programovacích jazycích, včetně C, pro což je ale nejdříve potřeba napsat propojující kód v jazyce jiném než Pythonu.

Výkon[editovat | editovat zdroj]

Obecně řečeno, CPython není mezi interprety Pythonu nejrychlejším – v některým testech ho překonává RPython, naopak Jython je výrazně pomalejší u krátkých programů, u kterých může nahrání javovského virtuálního stroje zabrat čas v řádu sekund.[2]

CPython využívá globální zámek interpretu pro každý svůj interpretující proces, což v praxi znamená, že v jednom procesu zpracovává v daný okamžik Pythonový bajtkód jen jedno vlákno – interpret tedy neumí sám efektivně plně využít moderní vícejádrové procesory.[3] To však neznamená, že by využívat v programech více vláken nemělo smysl; nejčastěji totiž nastává situace, kdy jednotlivá vlákna čekají na dokončení externích procesů (jako je komunikace po síti, vyhodnocování databázového dotazu, apod.), ne na globální zámek.

Zámek vadí v případech, které jsou náročné na výpočetní výkon a potřebovaly by rozložit výpočty mezi několik procesorových jader, jako jsou například různé implementace algoritmů. Pro takové případy CPython není vhodnou volbou, avšak lze využít jeho interoperability s výkonnějším C.

CPython není mezi interprety Pythonu svým využitím globálního zámku interpretu zdaleka jediný (stejné omezení má například Stackless Python), ovšem existují i interprety bez tohoto omezení (například Jython).

Unladen Swallow[editovat | editovat zdroj]

Unladen Swallow byla vývojová větev CPythonu zaměřená na mnohem vyšší výkon, avšak zachovávající kompatibilitu s hlavní větví. Cílem bylo dosáhnout zrychlení nahrazením CPythoního virtuálního stroje Just-in-time kompilátorem postaveným na LLVM.

Projekt si kladl za cíl až pětinásobné zrychlení oproti hlavní vývojové větvi[4], avšak toho nebylo nikdy dosaženo.[5]

Byl sponzorovaný Googlem a jeho správci Thomas Wouters, Jeffrey Yasskin a Collin Winte byli v té době u Googlu zaměstnaní, avšak většina tehdejších přispěvatelů k projektu ne.[6] Kód byl hostovaný na platformě Google Code.

Podobně jako většina věcí souvisejících s jazykem Python, i název projektu Unladen Swallow je narážkou na Monty Python.

Přesto, že projekt vytčených cílů nedosáhl, části kódu Unladen Swallow byly přidány do hlavní větve, jako například vylepšení modulu cPickle.[7]

Vývoj probíhal od roku 2009 a ačkoliv nebyl nikdy oficiálně ukončen, začátkem roku 2011 už bylo jasné, že se ve vývoji pokračovat nebude.[8]

Odkazy[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku CPython na anglické Wikipedii.

  1. FALTÝNEK, Lukáš. Python není krajta. LinuxExpres [online]. 2007-05-10. Dostupné online. ISSN 1801-3996. 
  2. TIŠNOVSKÝ, Pavel. RPython: překvapivě výkonný dialekt Pythonu, na němž je založen PyPy. Root.cz [online]. 2018-06-14. Dostupné online. ISSN 1212-8309. 
  3. ŠVEC, Jan. Létající cirkus (13). Root.cz [online]. Dostupné online. ISSN 1212-8309. 
  4. PAUL, Ryan. Google searches for holy grail of Python performance. Ars Technica [online]. 2009-03-26 [cit. 2021-06-22]. Dostupné online. (anglicky) 
  5. PEP 3146 -- Merging Unladen Swallow into CPython. Python.org [online]. [cit. 2021-06-22]. Dostupné online. (anglicky) 
  6. People - unladen-swallow - A faster implementation of Python - Google Project Hosting. web.archive.org [online]. 2015-10-29 [cit. 2021-06-22]. Dostupné online. (anglicky) 
  7. Issue 9410: Add Unladen Swallow's optimizations to Python 3's pickle. - Python tracker. bugs.python.org [online]. [cit. 2021-06-22]. Dostupné online. (anglicky) 
  8. KLECKNER, Reid. QINSB is not a Software Blog [online]. 2011-03-26 [cit. 2021-06-22]. Dostupné online. (anglicky) 

Externí odkazy[editovat | editovat zdroj]