Programmering

12 pytoner for ethvert programmeringsbehov

Når du velger Python for programvareutvikling, velger du et stort språkøkosystem med mange pakker som dekker alle slags programmeringsbehov. Men i tillegg til biblioteker for alt fra GUI-utvikling til maskinlæring, kan du også velge mellom et antall Python-driftstider - og noen av disse kjøretidene kan være bedre egnet for brukstilfellet du har for hånden enn andre.

Her er en kort omvisning av Python-distribusjoner, fra standardimplementering (CPython) til versjoner optimalisert for hastighet (PyPy), for spesielle brukstilfeller (Anaconda, ActivePython), for forskjellige språketid (Jython, IronPython), og til og med for kutting - kanteksperimentering (PyCopy, MesaPy).

CPython

CPython er referanseimplementeringen av Python, standardversjonen som alle andre Python-inkarnasjoner ser etter. CPython er skrevet i C, som antydet av navnet, og det er produsert av den samme kjernegruppen som er ansvarlig for alle beslutningene på toppnivå om Python-språket.

CPython brukstilfeller

Fordi CPython er referanseimplementeringen av Python, er det den mest konservative når det gjelder optimaliseringer. Dette er av design. Pythons vedlikeholdere vil at CPython skal være den mest kompatible og standardiserte implementeringen av Python tilgjengelig.

CPython er det beste valget når kompatibilitet og samsvar med Python-standarder betyr mer enn rå ytelse og andre bekymringer. CPython er også nyttig for eksperten som ønsker å jobbe med Python i sin mest grunnleggende inkarnasjon, og som er villig til å gi avkall på visse bekvemmeligheter.

For eksempel, med CPython, må du gjøre litt mer løft for å sette opp virtuelle miljøer. Andre distroer (spesielt Anaconda) gir mer automatisering rundt oppsett av arbeidsområdet.

CPython begrensninger

CPython har ikke ytelsesoptimaliseringene som finnes i andre utgaver av Python. Det er ingen innfødte JIT (just-in-time) kompilator, ingen akselererte mattebiblioteker og ingen tillegg fra tredjepart for ytelsens skyld. Dette er alt du kan legge til på egen hånd, men de følger ikke med. Igjen, alt dette er av design, for å sikre maksimal kompatibilitet og for å la CPython fungere som en referanseimplementering, men det betyr at ytelsesoptimaliseringer er opp til utvikleren.

Videre gir CPython bare et grunnleggende sett med verktøy for å jobbe med Python. Pip-pakkebehandleren, for eksempel, skaffer og installerer pakker fra Pythons opprinnelige PyPI-pakkerom. Pip vil til og med installere forhåndskompilerte binærfiler (via hjulfordelingsformat) hvis de leveres av utvikleren, men det vil ikke installere noen avhengigheter som pakker kan ha utenfor av PyPI.

Relatert video: Hvordan Python gjør programmeringen enklere

Perfekt for IT, forenkler Python mange typer arbeid, fra systemautomatisering til arbeid i banebrytende felt som maskinlæring.

Anaconda Python

Anaconda, produsert av Anaconda, Inc. (tidligere Continuum Analytics), er designet for Python-utviklere som trenger en distribusjon støttet av en kommersiell leverandør og med støtteplaner for bedrifter. De viktigste brukssakene for Anaconda Python er matematikk, statistikk, prosjektering, dataanalyse, maskinlæring og relaterte applikasjoner.

Anaconda Python brukstilfeller

Anaconda samler mange av de vanligste bibliotekene som brukes i kommersielt og vitenskapelig Python-arbeid - SciPy, NumPy, Numba og så videre - og gjør mange flere av dem tilgjengelige via et tilpasset pakningsadministrasjonssystem.

Anaconda skiller seg ut fra andre distribusjoner i hvordan den integrerer alle disse brikkene. Når den er installert, tilbyr Anaconda en stasjonær app - Anaconda Navigator - som gjør alle aspekter av Anaconda-miljøet tilgjengelig gjennom en praktisk GUI. Å finne komponenter, holde dem oppdatert og jobbe med dem er mye lettere utenom esken med Anaconda enn med CPython.

En annen velsignelse er måten Anaconda håndterer komponenter utenfor Python-økosystemet hvis de kreves for en bestemt pakke. De leilighet pakkehåndterer, laget spesielt for Anaconda, håndterer installering av både Python-pakker og eksterne tredjeparts programvarekrav.

Anaconda Python begrensninger

Fordi Anaconda inkluderer så mange nyttige biblioteker, og kan installere enda mer med bare noen få tastetrykk, kan størrelsen på en Anaconda-installasjon være mye større enn CPython. En grunnleggende CPython-installasjon kjører omtrent 100 MB; Anaconda-installasjoner kan vokse til gigabyte i størrelse. Dette kan være et problem i situasjoner der du har ressursbegrensninger.

En måte å redusere Anacondas fotavtrykk på er å installere Miniconda, en avskåret versjon av Anaconda som bare inneholder det absolutte minimumstykkene som trengs for å komme i gang. Du kan deretter legge til pakker i Miniconda etter eget ønske, med tanke på hvor mye plass hvert stykke bruker.

ActivePython

I likhet med Anaconda er ActivePython opprettet og vedlikeholdt av et profittfirma - i dette tilfellet ActiveState, som markedsfører en rekke språketid sammen med flerspråklig Komodo IDE.

ActivePython brukstilfeller

ActivePython er rettet mot bedriftsbrukere og dataforskere — folk som vil bruke Python, men ikke vil bruke mye krefter på å samle og administrere en Python-installasjon. ActivePython bruker Pythons vanlige pip pakkeforvalter, men leverer også noen hundre vanlige biblioteker som verifiserte innpakninger, sammen med noen vanlige biblioteker med tredjepartsavhengigheter som Intel Math Kernel Library.

ActivePython-begrensninger

Det er en potensiell ulempe med ActivePythons tilnærming til å håndtere pakker med eksterne avhengigheter. Hvis du vil oppgradere til en nyere versjon av et prosjekt med komplekse avhengigheter (f.eks. TensorFlow), må du også oppgradere ActivePython-installasjonen. I miljøer der utvikling har en tendens til å være knyttet til en bestemt versjon av et prosjekt, er dette mindre av et problem. Men i miljøer der utvikling har en tendens til å spore banebrytende versjoner, kan det være et problem.

PyPy

En drop-in erstatning for CPython-tolk, PyPy bruker just-in-time (JIT) kompilering for å øke hastigheten på kjøringen av Python-programmer. Avhengig av oppgaven som utføres, kan ytelsesgevinsten være dramatisk.

PyPy brukstilfeller

En vanlig klage på Python generelt, og CPython spesielt, er hastighet. Som standard kjører Python mange ganger tregere enn C, noen ganger hundrevis av ganger tregere. PyPy JIT-kompilerer Python-kode til maskinspråk, og gir i gjennomsnitt en hastighet på 7,7 ganger over CPython. Noen oppgaver kjører så mye som 50 ganger raskere.

Den beste delen er at det kreves liten eller ingen innsats fra utviklerens side for å låse opp disse gevinstene. Bytt ut CPython for PyPy, og for det meste er du ferdig.

PyPy-begrensninger

PyPy har alltid prestert best med “rene” Python-applikasjoner. Python-pakker som grensesnitt med C-biblioteker, for eksempel NumPy, har ikke gått så bra på grunn av måten PyPy har emulert CPythons opprinnelige binære grensesnitt. Over tid har PyPys utviklere imidlertid sluppet unna dette problemet, og gjort PyPy langt mer kompatibel med de fleste Python-pakker som er avhengige av C-utvidelser. Kort sagt, støtte for C-utvidelser er fremdeles begrenset, men langt mindre enn det pleide å være.

En annen mulig ulempe med PyPy er størrelsen på kjøretiden. Kjernen til CPython på Windows, unntatt standardbiblioteket, er rundt 4 MB, mens PyPy-kjøretiden er rundt 32 MB. Legg også merke til at PyPy lenge har lagt vekt på 2.x-grenen av Python, så for eksempel er PyPy for Python 3.x foreløpig bare tilgjengelig for Windows i en 32-biters beta-testversjon. (PyPy er tilgjengelig i 64-biters versjoner for Python 2.x og 3.x for Linux og MacOS.)

Jython

JVM (Java Virtual Machine) fungerer som kjøretid for mange språk i tillegg til Java. Den lange listen inkluderer Groovy, Scala, Clojure, Kotlin og, ja, Python, ved hjelp av Jython-prosjektet.

Jython brukstilfeller

Jython kompilerer Python 2.x-kode til JVM bytecode og kjører det resulterende programmet på JVM. I noen tilfeller vil et Jython-kompilert program kjøre raskere enn dets CPython-motstykke, men ikke alltid.

Den største fordelen Jython gir er direkte interoperabilitet med resten av Java-økosystemet. Java brukes enda mer enn Python. Å kjøre Python på JVM lar Python-utviklere utnytte et enormt økosystem med biblioteker og rammer som de ellers ikke ville kunne bruke. På samme måte tillater Jython Java-utviklere å bruke Python-biblioteker.

Jython begrensninger

Den største ulempen med Jython er at den bare støtter 2.x-grenen av Python. Støtte for Python 3.x er under utvikling, men har vært det i noen tid. Så langt er ingenting gitt ut.

Merk også at mens Jython bringer Python til JVM, bringer det ikke Python til Android. Ettersom det for øyeblikket ikke er noen havn i Jython til Android, kan Jython ikke brukes til å utvikle Android-applikasjoner.

IronPython

Akkurat som Jython er en implementering av Python på JVM, er IronPython en implementering av Python på .Net-kjøretiden, eller CLR (Common Language Runtime). IronPython bruker DLR (Dynamic Language Runtime) i CLR for å tillate Python-programmer å kjøre med samme grad av dynamikk som de gjør i CPython.

IronPython brukstilfeller

I likhet med Jython er IronPython en bro. Den store brukssaken er interoperabilitet mellom Python og .Net-universet. Eksisterende .Net-samlinger kan lastes inn i IronPython-programmer ved hjelp av Pythons opprinnelige import- og objektmanipulasjonssyntaks. Det er også mulig å kompilere IronPython-koden til en samling og kjøre den som den er eller påkalle den fra andre språk. Vær imidlertid oppmerksom på at MSIL (Microsoft Intermediate Language) i forsamlingen ikke kan nås direkte fra andre .Net-språk, da den ikke er i samsvar med Common Language Specification.

IronPython begrensninger

I likhet med Jython støtter IronPython for øyeblikket bare Python 2.x. Det arbeides imidlertid med å lage en IronPython 3.x-implementering.

WinPython

Som navnet antyder, er WinPython en Python-distribusjon opprettet spesielt for brukere av Microsoft Windows. CPythons tidligere utgaver for Windows var ikke godt utformet, og det var vanskelig for Windows-brukere å dra full nytte av Python-økosystemet. CPythons Windows-utgave har forbedret seg over tid, men WinPython tilbyr fortsatt mange ting som ikke finnes i CPython.

WinPython brukstilfeller

WinPythons hovedattraksjon er at det er en selvstendig utgave av Python. Det trenger ikke å installeres på maskinen der den kjører; det trenger bare å pakkes ut i en katalog. Dette gjør WinPython nyttig i tilfeller der programvare ikke kan installeres på et gitt system, i scenarier der en forhåndskonfigurert Python-kjøretid må distribueres sammen med applikasjonene for å kjøre på den, eller hvor flere utgaver av Python må kjøre side om side uten å forstyrre hverandre.

WinPython pakker også en rekke datavitenskapsorienterte pakker - NumPy, Pandas, SciPy, Matplotlib, etc. - slik at de kan brukes med en gang, uten ytterligere installasjonstrinn. Også inkludert er en C / C ++ -kompilator, siden mange Windows-maskiner ikke har en inkludert, og mange Python-utvidelser krever eller kan bruke den.

WinPython-begrensninger

En begrensning av WinPython er at det kan inkludere for mye som standard for noen brukssaker. For å avhjelpe det, skaper WinPythons skaperne en "null" -versjon av hver WinPython-utgave, som bare inneholder den mest minimale installasjonen av produktet. Flere pakker kan legges til senere, enten med Pythons egne pip verktøy eller WinPythons WPPM-verktøy.

Python Portable

Python Portable er CPython-kjøretiden i en selvstendig pakke. Det kommer med tillatelse fra PortableDevApps-samlingen av lignende selvstendige applikasjoner.

Python Portable brukstilfeller

I likhet med WinPython inkluderer Python Portable en rekke pakker for vitenskapelig databehandling — Matplotlib, Numba, SymPy, SciPy, Cython og andre. I likhet med WinPython, kjører Python Portable uten å måtte installeres formelt på Windows-verten; den kan bo i hvilken som helst katalog eller på en flyttbar stasjon. Også inkludert er Spyder IDE og Pythons pip-pakkebehandling, slik at du kan legge til, endre eller fjerne pakker etter behov.

Python Portable begrensninger

I motsetning til WinPython inkluderer ikke Python Portable en C / C ++ - kompilator. Du må oppgi en C-kompilator for å bruke kode skrevet med Cython (og dermed kompilert til C).

Eksperimentelle Python-distribusjoner

Disse distribusjonene gjør betydelige endringer i Python - enten fordi de bruker Python som utgangspunkt for noe helt nytt, eller fordi de gjør strategiske endringer i standard Python. I det store og hele er disse pytonene ikke anbefalt for produksjonsbruk ennå.

Hvis du lever med en Python 2.x-kodebase i overskuelig fremtid, vil du kanskje sjekke ut artikkelen vår om de eksperimentelle Python-distribusjonene som holder Python 2.x i live.

MicroPython

MicroPython gir et minimalt delmengde av Python-språket som kan kjøres på ekstremt lav maskinvare, for eksempel mikrokontrollere. MicroPython implementerer Python 3.4 med noen forskjeller. Det er enkelt å skrive MicroPython-kode hvis du kjenner Python, men eksisterende kode kjører kanskje ikke som den er.

Pycopy

$config[zx-auto] not found$config[zx-overlay] not found