Smazaný obsah Přidaný obsah
→‎Různé implementace Pythonu: Přepracována kapitola o alternativních implementacích pythonu.
značky: editace z mobilu editace z mobilního webu
→‎Výkon: Optimalizace informací v souvislosti s úpravou kapitoly o alternativních implementacích Pythonu.
značky: editace z mobilu editace z mobilního webu
Řádek 111:
V minulosti se pro zvýšení výkonu používala snadno použitelná knihovna [[Psyco]], která [[transparentnost (informatika)|transparentně]] [[Optimalizace (informatika)|optimalizovala]] kód Pythonu na výkon (JIT). Některé operace byly pomocí Psyco urychleny až řádově<ref name="gp4psyco">http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=python&lang2=psyco</ref>. Dnes je tato knihovna neudržovaná (cca od roku 2010) a použitelná jen pro 32 bitové prostředí a podporuje Python jen do verze 2.6.
 
V současné době tuto knihovnu nahradily projekty jako PyPy, Cython a další. PyPy je alternativní interpret jazyka Python, kterýviz jealeternativní zaměřenimplementace na výkon a obsahuje vlastní implementaci JITPythonu. Má i další vlastnosti, třeba stackless mód, který poskytuje výkonné mikro thready pro masivní paralelní programování.
 
Nejúčinnější způsob dosažení výkonu v Pythonu je použití Cythonu s optimalizací kódu na výkon. Následující příklad ukazuje neoptimalizovanou a maximálně optimalizovanou funkci. Tedy změny, které je nutno učinit pro získání maximálního výkonu pro transkompiler Cython.
Cython je transkompilátor, to jest Cython transformuje kód jazyka Python do kódu jazyka C. Ten se pak běžnými nástroji přeloží do binární podoby. Jenom zkompilováním Python kódu do binární podoby vzroste výkon aplikace typicky dvojnásobně. Dále Cython rozšiřuje syntaxi Python jazyka. Například o statické typy nebo přímé volání funkcí z knihoven C. Tímto lze optimalizovat výkon programu až na úroveň výkonu programů napsaných přímo v jazyce C. Cython je kompatibilní se standardním interpretem Pythonu (CPython), což znamená, že Cythonem lze kompilovat knihovny pro Python. Lze tak s výhodou využít toho, že výkonově kritická je typicky jen malá část kódu, běžně jen pár funkcí. Tyto funkce lze vytáhnout do samostatného modulu, optimalizovat pro Cython a přeložit je Cythonem jako knihovnu pro Python. Programátorovi tak zůstane zachována flexibilita a pohodlí jazyka Python pro většinu kódu a současně s tím získá i vysoký výkon jazyka C. Na serveru root.cz je pěkná [https://www.root.cz/clanky/prakticke-pouziti-nastroje-cython-pri-prekladu-pythonu-do-nativniho-kodu-1/ ukázka postupné optimalizace Python kódu v Cythonu] pro získání maximálního výkonu s vysvětlením všech náležitostí. Já na ukázku uvedu začátek a konec optimalizace jednoduché funkce add_two_numbers().<syntaxhighlight lang="python3">
 
<syntaxhighlight lang="python3">
def add_two_numbers(x, y):
print(x)
Řádek 130 ⟶ 132:
print(z)
</syntaxhighlight>
 
Účinnost těchto optimalizací je velmi vysoká. Takto optimalizovaný program dosahuje téměř výkonu aplikace napsané přímo v jazyce C. Viz benchmark, který porovnává výkon programu při výpočtu velké Mandelbrotovy množiny.
 
{| class="wikitable"
|+Benchmark výkonu funkce pro výpočet Mandelbrotovy množiny v sec.