CPython

Tento článek pojednává o referenční implementaci Pythonu. Možná hledáte: Cython (Programovací jazyk odvozený od Pythonu).
CPython
Logo
VývojářGuido van Rossum
Aktuální verze3.13.0 (7. října 2024)
Operační systémmultiplatformní software
Platformamultiplatformní software
Vyvíjeno vC
Typ softwaruimplementace programovacího jazyka, referenční implementace, interpret, svobodný a otevřený software a svobodný 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.

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]

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é v archivu pořízeném z originálu dne 2015-10-29. (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]