CPython

referenční implementace interpretu jazyka Python From Wikipedia, the free encyclopedia

CPython
Remove ads
Tento článek pojednává o referenční implementaci Pythonu. Možná hledáte: Cython (Programovací jazyk odvozený od Pythonu).

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šířenější, bývá často nazývána stručně Python.[1]

Stručná fakta Vývojář, Aktuální verze ...
Remove ads

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.

Remove ads

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]

Remove ads

Odkazy

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads