CPython

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

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.

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.

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. 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. +more), 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, avšak toho nebylo nikdy dosaženo.

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. 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.

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.

Odkazy

Reference

Externí odkazy

[url=https://www.python.org/]Společná domácí stránka Pythonu a CPythonu[/url]

Kategorie:Python Kategorie:Svobodný software v C Kategorie:Interprety

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top