CPython
![]() | |
![]() | |
Vývojář | Guido van Rossum |
---|---|
Aktuální verze | 3.12.0 (2. října 2023) |
Operační systém | multiplatformní software |
Platforma | multiplatformní software |
Vyvíjeno v | C |
Typ softwaru | implementace programovacího jazyka, referenční implementace, interpret, svobodný a otevřený software a svobodný software |
Licence | Python Software Foundation License |
Web | www |
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
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
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
Reference
V tomto článku byl použit překlad textu z článku CPython na anglické Wikipedii.
- ↑ FALTÝNEK, Lukáš. Python není krajta. LinuxExpres [online]. 2007-05-10. Dostupné online. ISSN 1801-3996.
- ↑ 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.
- ↑ ŠVEC, Jan. Létající cirkus (13). Root.cz [online]. Dostupné online. ISSN 1212-8309.
- ↑ PAUL, Ryan. Google searches for holy grail of Python performance. Ars Technica [online]. 2009-03-26 [cit. 2021-06-22]. Dostupné online. (anglicky)
- ↑ PEP 3146 -- Merging Unladen Swallow into CPython. Python.org [online]. [cit. 2021-06-22]. Dostupné online. (anglicky)
- ↑ 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)
- ↑ 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)
- ↑ KLECKNER, Reid. QINSB is not a Software Blog [online]. 2011-03-26 [cit. 2021-06-22]. Dostupné online. (anglicky)
Externí odkazy
- Společná domácí stránka Pythonu a CPythonu