Zdroj obrázku: pixabay.com

Jak si vyrobit Python rychle jako Psyco

Ahoj kluci, vítejte na mém dalším blogu Pythonu. Ale dnes nebudu mluvit jen o Pythonu rychle. Takže než budu pokračovat, předpokládal bych, že už znáš kousky a * bajty o pythonu. Pokud jste začátečník, můžete hledat mé další blogy, dozvědět se více o pythonu a pak se k nám vrátit. Nyní diskutujeme rychle o tématu Python jako Psyco.

Pokud jste zkušeným programátorem v jiném oboru a myslíte si, že znáte základy a nyní si můžete přečíst tento blog, pak si položte jednu otázku, víte, co je Psyco? Pokud si v tuto chvíli myslíte, že toto „Psyco“ znamená šílené, pak to zase není pro vás.

Pořád jste se vyhnuli mnoha základním věcem nebo si děláte legraci, když říkáte, že jste zkušený programátor. Věř mi, pokusím se tento blog udělat co nejjednodušší a pokusit se nikoho neurazit. Ale pokud nemáte základní znalosti, bude pro vás těžší to pochopit.

Nechte tu tvrdou část stranou, dokonce si začnete myslet, že rychlé věci pythonu jsou mnohem těžší než jakékoli jiné programování, které je naprosto špatné. Takže teď víme, co je co, pojďme na to, že?

Co je Psyco?

Co je to Psyco? Psyco dělá python rychle. Zmatený? Ano, také jsem byl zmatený, když jsem to slyšel poprvé. Python je již rychlý, tak proč používat psyco? Proto jsem řekl. Tento blog není určen pro nooby a začátečníky. Pokud jste kódovali v pythonu dlouhou dobu, vytvořili jste velké množství kódů a všechno, pak budete vědět, že python rychle potřebuje kompaktní a přísné kódování. Se správným typem kódování můžete učinit rychlé i kompaktní.

Ale potřebuje čas a tak. Nelze vytvářet kompaktní a bezchybné kódy z modré. A tady Psyco vzniká. Psyco je pouze pythonový rychlý rozšiřující modul, který urychluje provádění pythonového běhového kódu. Teď můžete být zmatení právě teď, modul, který zrychluje Pythonův kód? Přesně tak to je. Pojďme k většímu obrázku.

Python a jeho pravá příroda

Pokud jste dříve kódovali v jazyce Java nebo C, možná si myslíte, že běh pythonu je extrémně rychlý než ostatní. Ale tam se mýlíš. Pokud jde o hrubý výkon, python je rozhodně pomalejší než C, Java nebo C #. Není však známo, že by python měl rychlost v surovém výkonu.

Syrové kódování provádí pouze začátečníci nebo noobové. Profesionální lidé dělají správné kódování a správné odsazení *. Když porovnáte správně zkompilovaný kód a změříte celkové využití paměti, počáteční čas spuštění, dobu načítání, pak v tomto okamžiku je python běh extrémně rychlý.

Kromě toho, pokud se pokoušíte psát kódy pro vytvoření serveru nebo takového obsahu, Java je extrémně rychlá, dokonce rychlejší než C. To je možné, protože Java Virtual Machine může kompilovat horký bajtový kód do strojového kódu. Přitom může plně využít všech funkcí CPU.

To obvykle není případ C, alespoň dokud neopustíte laboratorní prostředí. Nyní jen předpokládejme, že distribuujete tucet optimalizovaných sestav svým klientům - to prostě nebude fungovat.

Nyní se tedy vraťme k hlavnímu bodu, pokud je problém s časem spuštění (což není problém například pro serverovou aplikaci). Java nemusí být tou nejlepší alternativou. Může to také záviset na tom, kde jsou vaše oblasti horkých kódů, například: Pokud jsou v nativních knihovnách s nějakým rychlým kódem Python, který je jednoduše slepí, budete moci rychle získat také výkon podobný C. Skriptovací jazyky však budou mít tendenci být pomalejší - alespoň ve většině případů.

Doporučené kurzy

  • Online kurz VB.NET
  • Online certifikační školení v oblasti datové vědy
  • Profesionální kurz ISTQB
  • Program Kali Linux

Psyco - přesně to zní

Jo, četl jsi to správně. Nyní se vraťme k hlavnímu tématu. Nyní definují vývojáři psyco na své webové stránce: -

"Psyco považujte za jakýsi kompilátor just-in-time (JIT), trochu jako to, co existuje pro jiné jazyky, které vysílá strojový kód za chodu, místo aby interpretoval váš program Python krok za krokem. Rozdíl oproti tradičnímu přístupu ke kompilátorům JIT je v tom, že Psyco píše několik verzí stejných bloků (blok je trochu funkcí), které jsou optimalizovány specializací na některé druhy proměnných („druh“ může znamenat typ, ale je obecnější). Výsledkem je, že vaše neupravené programy Python běží rychleji.

2x až 100x zrychlení, obvykle 4x, s nemodifikovaným překladačem Python a nemodifikovaným zdrojovým kódem, jen dynamicky zavádějící rozšiřující modul C. “

Stručně řečeno, Psyco vám to přeformuluje v jednoduchém prohlášení a dá vám více výkonu podobného Java. Výměnou za rychlejší algoritmy získáte pomalejší časy spuštění a vyšší využití paměti.

Nicméně, existují určité věci, které byste si měli pamatovat při testování jazyků jako Java a Python. Kód v těchto jazycích lze často výrazně urychlit použitím konstrukcí, které jsou pro daný jazyk vhodnější (např. Porozumění seznamu v Pythonu rychle, nebo pomocí char () a String Builder pro určité operace String v Javě).

Navíc, pro Python rychle, použití Psyco může výrazně zvýšit rychlost programu. A pak je tu celý problém s používáním vhodných datových struktur a sledováním složitosti vašeho kódu za běhu.

Abychom pochopili python psyco, musíme dobře rozumět funkci eval_frame () pythonu. To, co dělá Python psyco, je převádí funkci eval_frame pythonu na složenou vyhodnocovací jednotku a psyco při tom využívá spoustu paměti. Použití psyco je mnohem snazší, než vysvětlit.

Chcete-li jednoduše použít psyco, stáhněte si modul psyco ze zdroje sourceforge.net a pak si tento kód ponechejte na začátku svého prvního kódu:

import psyco ; psyco.jit()

from psyco.classes import *

A pak můžete pomocí následujícího příkazu přesněji zacílit na chování psyco:

psyco.bind(somefunc) # or method, class

newname = psyco.proxy(func)

Pokud tyto věci s vámi nejdřív nefungují, musíte být trpěliví. Vyžaduje pokus a omyl. Nemůžete přímo očekávat, že se váš program spustí jako Usain Bolt. Ušetřete mi sarkastické hrubé chování, ale takto to funguje.

Ve skutečnosti python psyco nemění ani neupravuje váš kód, aby byl chytřejší. Sotva profiluje váš kód, aby byl konkrétnější. Minimální optimalizace umožňuje co nejblíže strojovému kódu.

Přestože python psyco dělá vaše programy tak rychle jako C, existují určitá omezení a nevýhody. Níže jsou uvedeny některé z nich, které jsem uvedl níže:

  1. Psyco je nyní zastaralé, neudržované a mrtvé. Náhrada je PyPy
  2. Psyco má spoustu problémů i s pythonem 2.7. Ve verzi 2.5 však funguje mnohem lépe a rychleji
  3. Psyco nefunguje na 64bitových počítačích. Je však možné nainstalovat virtuální stroj s architekturou i386 a zajistit, aby fungoval.
  4. Mac OSX je standardně dodáván s pythonem 64-bit. Aby bylo možné Psyco fungovat, bude třeba překompilovat python x86 ze zdroje.

I když mají tolik problémů, lidé stále používají Psyco místo PyPy. Ale znovu, pokud se mě zeptáte, PyPy je úžasná alternativa k Psyco. Psyco funguje jako kompilátor Just In Time, ale PyPy má kompilátor Just in Time. Tam, kde Psyco používá hodně paměti, používá PyPy mnohem méně paměti než Psyco. PyPy je ještě kompatibilnější s frameworky jako Django a Twisted.

Koneckonců to bez ohledu na to, co říkám, je to pro naši vlastní potřebu. Lidé s pozadím Psyco vám vždy doporučí používat Psyco, zatímco lidé, kteří chtějí rychlost, by potřebovali PyPy. Ale dovolte mi něco citovat.

"Přestože se u motocyklů jako R1 nebo Hayabusa cítíte dostatečně dobře, někdy má jízda na Harley Davidson své vlastní potěšení."

Stejně to funguje s Psyco a PyPy. Nakonec, bez velkého nadšence, bych navrhl použít oba na začátku a poté pokračovat podle toho, co se cítíte mnohem pohodlněji.

Doporučené články:

Zde je několik článků, které vám pomohou získat více podrobností o Pythonu Fast a Python psyco, takže stačí projít odkaz.

  1. Linux vs Ubuntu-Differences
  2. 25 nejúžasnějších dotazů a odpovědí na Python
  3. Kariéra v Pythonu
  4. Python vs Node.js
  5. Užitečný průvodce Kali Linux vs Ubuntu
  6. Seznam Python kompilátorů

Kategorie: