Programavimas

12 pitonų kiekvienam programavimo poreikiui

Kai programinės įrangos kūrimui pasirenkate „Python“, pasirenkate didelę kalbos ekosistemą su gausybe paketų, kurie apima įvairius programavimo poreikius. Be bibliotekų viskam, pradedant GUI kūrimu ir baigiant mašininiu mokymusi, taip pat galite rinktis iš daugybės „Python“ vykdymo laiko - ir kai kurie iš šių vykdymo laiko gali labiau tikti jūsų turimam naudojimo atvejui nei kiti.

Čia pateikiama trumpa „Python“ paskirstymų apžvalga nuo standartinio diegimo („CPython“) iki greičiui optimizuotų versijų („PyPy“), specialios paskirties atvejams („Anaconda“, „ActivePython“), skirtingoms kalboms („Jython“, „IronPython“) ir netgi pjaustymui krašto eksperimentai (PyCopy, MesaPy).

„CPython“

„CPython“ yra standartinė „Python“, standartinės versijos, kurios ieško visi kiti „Python“ įsikūnijimai, įgyvendinimas. „CPython“ yra parašytas C kalba, kaip numanoma iš pavadinimo, ir jį kuria ta pati pagrindinė žmonių grupė, atsakinga už visus aukščiausio lygio sprendimus dėl „Python“ kalbos.

„CPython“ naudojimo atvejai

Kadangi „CPython“ yra pagrindinis „Python“ diegimas, jis yra konservatyviausias, kalbant apie jo optimizavimą. Tai yra pagal dizainą. „Python“ prižiūrėtojai nori, kad „CPython“ būtų plačiausiai suderinamas ir standartizuotas „Python“ diegimas.

„CPython“ yra geriausias pasirinkimas, kai suderinamumas ir atitikimas „Python“ standartams yra svarbesni nei neapdorotas našumas ir kiti rūpesčiai. „CPython“ taip pat naudingas ekspertui, norinčiam dirbti su „Python“ pagrindiniame jo įsikūnijime ir norinčiam atsisakyti tam tikrų patogumų.

Pvz., Su „CPython“ turite šiek tiek daugiau pakelti, kad sukurtumėte virtualią aplinką. Kiti rajonai (ypač „Anaconda“) suteikia daugiau automatikos nustatant darbo sritį.

„CPython“ apribojimai

„CPython“ neturi našumo optimizavimo, randamo kituose „Python“ leidimuose. Nėra gimtojo JIT (tiesiog laiku) kompiliatoriaus, nėra pagreitintų matematikos bibliotekų ir trečiųjų šalių priedų, kad būtų galima atlikti našumą. Tai yra viskas, ką galite pridėti patys, bet jie nėra susieti. Vėlgi, visa tai yra pagal dizainą, siekiant užtikrinti maksimalų suderinamumą ir leisti „CPython“ naudoti kaip orientacinį diegimą, tačiau tai reiškia, kad bet kokį našumo optimizavimą turi spręsti kūrėjas.

Be to, „CPython“ pateikia tik pagrindinį įrankių rinkinį darbui su „Python“. Pavyzdžiui, „pip“ paketų tvarkyklė gauna ir įdiegia paketus iš „Python“ gimtosios „PyPI“ paketų saugyklos. „Pip“ netgi įdiegs iš anksto sukompiliuotus dvejetainius failus (per ratų paskirstymo formatą), jei juos pateikia kūrėjas, tačiau jis neįdiegs jokių paketų priklausomybių lauke iš PyPI.

Susijęs vaizdo įrašas: Kaip „Python“ palengvina programavimą

Puikiai IT, „Python“ supaprastina daugybę rūšių darbų, pradedant sistemos automatizavimu ir baigiant darbais pažangiose srityse, tokiose kaip mašininis mokymasis.

„Anaconda Python“

„Anaconda“, kurią gamina „Anaconda, Inc.“ (buvusi „Continuum Analytics“), skirta „Python“ kūrėjams, kuriems reikalingas platinimas, palaikomas komercinio tiekėjo ir su paramos planais įmonėms. Pagrindiniai „Anaconda Python“ naudojimo atvejai yra matematika, statistika, inžinerija, duomenų analizė, mašininis mokymasis ir susijusios programos.

„Anaconda Python“ naudojimo atvejai

„Anaconda“ sujungia daugelį dažniausiai naudojamų bibliotekų, naudojamų komerciniame ir moksliniame „Python“ darbe, - „SciPy“, „NumPy“, „Numba“ ir t. T., Ir dar daugelį jų pasiekia per pasirinktinę paketo valdymo sistemą.

„Anaconda“ išsiskiria iš kitų paskirstymų tuo, kaip integruoja visus šiuos kūrinius. Įdiegus „Anaconda“ teikia darbalaukio programą - „Anaconda Navigator“, kuri suteikia galimybę visiems „Anaconda“ aplinkos aspektams naudotis per patogią GUI. „Anaconda“ yra daug lengviau rasti komponentus, juos atnaujinti ir dirbti su jais yra daug lengviau nei su „CPython“.

Kitas palaima yra tai, kaip „Anaconda“ tvarko komponentus iš „Python“ ekosistemos ribų, jei jų reikia konkrečiam paketui. conda specialiai „Anaconda“ sukurtas paketų tvarkytuvas tvarko tiek „Python“ paketus, tiek trečiųjų šalių išorinės programinės įrangos reikalavimus.

„Anaconda Python“ apribojimai

Kadangi „Anaconda“ apima tiek daug naudingų bibliotekų ir gali įdiegti dar daugiau tik su keliais klavišų paspaudimais, „Anaconda“ diegimo dydis gali būti daug didesnis nei „CPython“. Pagrindinis „CPython“ diegimas veikia apie 100 MB; „Anaconda“ įrenginiai gali išaugti iki gigabaitų. Tai gali būti problema tais atvejais, kai turite išteklių apribojimų.

Vienas iš būdų sumažinti „Anaconda“ pėdsaką yra įdiegti „Miniconda“ - nuplėštą „Anaconda“ versiją, į kurią įeina tik absoliutus minimumas vienetų, reikalingų atsistoti ir veikti. Tada galite pridėti paketus į „Miniconda“ taip, kaip jums atrodo tinkama, stebėdami, kiek vietos sunaudoja kiekvienas gabalas.

„ActivePython“

Kaip ir „Anaconda“, „ActivePython“ kuria ir prižiūri pelno siekianti įmonė - šiuo atveju „ActiveState“, kuri kartu su daugiakalbiu „Komodo IDE“ parduoda daugybę kalbų.

„ActivePython“ naudojimo atvejai

„ActivePython“ skirta įmonės vartotojams ir duomenų mokslininkams - žmonėms, norintiems naudoti „Python“, tačiau nenorintiems skirti daug pastangų „Python“ diegimui ir valdymui. „ActivePython“ naudoja „Python“ įprastą pip paketų tvarkyklę, bet taip pat pateikia kelis šimtus bendrų bibliotekų kaip patikrintus paketus, taip pat kai kurias bendras bibliotekas su trečiųjų šalių priklausomybėmis, tokias kaip „Intel Math Kernel Library“.

„ActivePython“ apribojimai

Yra vienas galimas „ActivePython“ požiūrio į paketų su išorinėmis priklausomybėmis tvarkymo trūkumas. Jei norite atnaujinti į naujesnę projekto versiją su sudėtingomis priklausomybėmis (pvz., „TensorFlow“), turėsite atnaujinti ir „ActivePython“ diegimą. Aplinkose, kur kūrimas linkęs būti susietas su konkrečia projekto versija, tai nėra problema. Tačiau aplinkoje, kur kūrimas linkęs sekti pažangiausias versijas, tai gali sukelti problemų.

PyPy

„CPython“ vertėjo pakeitimas „PyPy“ naudoja „just-in-time“ (JIT) kompiliaciją, kad pagreitintų „Python“ programų vykdymą. Priklausomai nuo atliekamos užduoties, našumas gali būti dramatiškas.

„PyPy“ naudojimo atvejai

Dažnas skundas dėl „Python“ ir ypač apie „CPython“ yra greitis. Pagal numatytuosius nustatymus „Python“ veikia daug kartų lėčiau nei C, kartais šimtus kartų lėčiau. „PyPy JIT“ kompiliuoja „Python“ kodą į kompiuterio kalbą, suteikdamas vidutiniškai 7,7 karto didesnį greitį nei „CPython“. Kai kurios užduotys vykdomos net 50 kartų greičiau.

Geriausia tai, kad norint pasiekti šiuos laimėjimus, kūrėjas nereikalauja jokių pastangų. Pakeiskite „CPython“ į „PyPy“, ir didžioji dalis baigsite.

PyPy apribojimai

„PyPy“ visada geriausiai veikė su „grynomis“ „Python“ programomis. „Python“ paketams, kurie sąsaja su C bibliotekomis, pvz., „NumPy“, taip pat nesiseka dėl to, kaip „PyPy“ mėgdžiojo „CPython“ vietines dvejetaines sąsajas. Tačiau laikui bėgant PyPy kūrėjai atsisakė šio klausimo ir padarė PyPy daug labiau suderinamą su dauguma Python paketų, kurie priklauso nuo C plėtinių. Trumpai tariant, C plėtinių palaikymas vis dar yra ribotas, tačiau kur kas mažiau nei anksčiau.

Kitas galimas „PyPy“ trūkumas yra vykdymo laiko dydis. Pagrindinis „Windows“ „CPython“ vykdymo laikas, išskyrus standartinę biblioteką, yra apie 4 MB, o „PyPy“ - apie 32 MB. Taip pat atkreipkite dėmesį, kad „PyPy“ jau seniai pabrėžė „Python“ 2.x filialą, todėl, pavyzdžiui, „PyPy for Python 3.x“ šiuo metu „Windows“ galima naudoti tik 32 bitų beta versijos versijoje. („PyPy“ yra 64 bitų „Python 2.x“ ir „3.x“ versijose, skirtose „Linux“ ir „MacOS“.)

Jython

JVM („Java“ virtualioji mašina) veikia kaip daugelio kalbų, išskyrus „Java“, vykdymo laikas. Į ilgąjį sąrašą įtraukiami Groovy, Scala, Clojure, Kotlin ir, taip, Python, naudojant „Jython“ projektą.

„Jython“ naudojimo atvejai

„Jython“ surenka „Python 2.x“ kodą į JVM baitų kodą ir paleidžia gautą programą JVM. Kai kuriais atvejais „Jython“ sukompiliuota programa veiks greičiau nei „CPython“ atitikmuo, bet ne visada.

Didžiausias „Jython“ teikiamas pranašumas yra tiesioginė sąveika su likusia „Java“ ekosistema. „Java“ naudojama dar plačiau nei „Python“. „Python“ paleidimas JVM leidžia „Python“ kūrėjams pasinaudoti milžiniška bibliotekų ir sistemų ekosistema, kurios kitaip negalėtų naudoti. Tuo pačiu principu „Jython“ leidžia „Java“ kūrėjams naudoti „Python“ bibliotekas.

„Jython“ apribojimai

Didžiausias „Jython“ trūkumas yra tas, kad jis palaiko tik „Python“ 2.x šaką. „Python 3.x“ palaikymas yra kuriamas, tačiau jau kurį laiką. Iki šiol nieko nebuvo išleista.

Taip pat atkreipkite dėmesį, kad nors „Jython“ atneša „Python“ į JVM, „Python“ neatneša į „Android“. Kadangi šiuo metu nėra tinkamo „Jython“ uosto, „Jython“ negalima naudoti „Android“ programų kūrimui.

„IronPython“

Kaip „Jython“ yra „Python“ diegimas JVM, „IronPython“ yra „Python“ diegimas .Net vykdymo metu arba CLR (Common Language Runtime). „IronPython“ naudoja CLR DLR („Dynamic Language Runtime“), kad „Python“ programos galėtų veikti tokiu pat dinamiškumo laipsniu, kaip ir „CPython“.

„IronPython“ naudojimo atvejai

Kaip ir „Jython“, „IronPython“ yra tiltas. Didelis naudojimo atvejis yra „Python“ ir .Net visatos sąveika. Esamus .Net rinkinius galima įkelti į „IronPython“ programas naudojant „Python“ vietinę importo ir manipuliavimo objektu sintaksę. Taip pat galima surinkti „IronPython“ kodą į asamblėją ir paleisti jį tokį, koks yra, arba iškviesti jį iš kitų kalbų. Tačiau atkreipkite dėmesį, kad asamblėjos MSIL („Microsoft“ tarpinė kalba) negalima tiesiogiai pasiekti iš kitų .Net kalbų, nes ji neatitinka bendrosios kalbos specifikacijos.

„IronPython“ apribojimai

Kaip ir „Jython“, „IronPython“ šiuo metu palaiko tik „Python 2.x“. Tačiau šiuo metu stengiamasi sukurti „IronPython 3.x“ diegimą.

„WinPython“

Kaip rodo pavadinimas, „WinPython“ yra „Python“ paskirstymas, sukurtas specialiai „Microsoft Windows“ vartotojams. „CPython“ ankstesni leidimai, skirti „Windows“, nebuvo gerai sukurti, o „Windows“ vartotojams buvo sunku išnaudoti visas „Python“ ekosistemos galimybes. „CPython“ „Windows“ leidimas laikui bėgant tobulėjo, tačiau „WinPython“ vis tiek siūlo daug dalykų, kurių nėra „CPython“.

„WinPython“ naudojimo atvejai

Pagrindinė „WinPython“ atrakcija yra tai, kad tai yra savarankiškas „Python“ leidimas. Jo nereikia įdiegti mašinoje, kurioje jis veikia; jį tiesiog reikia išpakuoti į katalogą. Tai daro „WinPython“ naudingą tais atvejais, kai programinės įrangos negalima įdiegti tam tikroje sistemoje, scenarijuose, kai iš anksto sukonfigūruotą „Python“ vykdymo laiką reikia paskirstyti kartu su joje veikiančiomis programomis arba kai reikia paleisti kelis „Python“ leidimus. netrukdydami vienas kitam.

„WinPython“ taip pat sujungia daugybę į duomenų mokslą orientuotų paketų - „NumPy“, „Pandas“, „SciPy“, „Matplotlib“ ir kt., Kad juos būtų galima naudoti iškart be papildomų diegimo veiksmų. Taip pat yra C / C ++ kompiliatorius, nes daugelyje „Windows“ mašinų jų nėra, o daugeliui „Python“ plėtinių reikia arba jie gali jais naudotis.

„WinPython“ apribojimai

Vienas „WinPython“ apribojimas yra tai, kad kai kuriais naudojimo atvejais pagal numatytuosius nustatymus gali būti per daug. Norėdami tai ištaisyti, „WinPython“ kūrėjai pateikia „nulinę“ kiekvieno „WinPython“ leidimo versiją, kurioje yra tik kuo mažiau produkto įdiegimo. Daugiau paketų galima pridėti vėliau, naudojant „Python“ pip įrankį arba „WinPython“ WPPM įrankį.

„Python Portable“

„Python Portable“ yra „CPython“ vykdymo laikas savarankiškame pakete. Jis gaunamas iš „PortableDevApps“ panašių savarankiškų programų kolekcijos.

„Python Portable“ naudojimo atvejai

Kaip ir „WinPython“, „Python Portable“ apima daugybę paketų, skirtų moksliniam skaičiavimui - „Matplotlib“, „Numba“, „SymPy“, „SciPy“, „Cython“ ir kt. Be to, kaip ir „WinPython“, „Python Portable“ veikia be oficialaus įdiegimo „Windows“ pagrindiniame kompiuteryje; jis gali gyventi bet kuriame kataloge arba išimamame diske. Taip pat yra „Spyder IDE“ ir „Python“ pip paketų tvarkyklė, todėl prireikus galite pridėti, pakeisti ar pašalinti paketus.

„Python Portable“ apribojimai

Skirtingai nuo „WinPython“, „Python Portable“ nėra C / C ++ kompiliatoriaus. Turėsite pateikti C kompiliatorių, kad galėtumėte naudoti su „Cython“ parašytą kodą (taigi sukompiliuotą į „C“).

Eksperimentiniai „Python“ paskirstymai

Šie paskirstymai daro reikšmingus „Python“ pakeitimus arba dėl to, kad jie naudoja „Python“ kaip pradžios tašką kažkam visiškai naujam, arba dėl to, kad jie daro strateginius standartinio „Python“ pakeitimus. Apskritai šie pitonai dar nerekomenduojami naudoti gamyboje.

Jei artimiausioje ateityje gyvenate su „Python 2.x“ kodų baze, galbūt norėsite perskaityti mūsų straipsnį apie eksperimentinius „Python“ paskirstymus, kurie palaiko „Python 2.x“ gyvą.

„MicroPython“

„MicroPython“ pateikia minimalų „Python“ kalbos pogrupį, kuris gali veikti su ypač žemos klasės aparatine įranga, pavyzdžiui, mikrovaldikliais. „MicroPython“ įdiegia „Python 3.4“ su tam tikrais skirtumais. „MicroPython“ kodą lengva parašyti, jei žinote „Python“, tačiau esamas kodas gali neveikti toks, koks yra.

Pikopija