Python 3.14 pakub tõelist paralleelsust, turvalisi malle ja sujuvamat kogemust

  • Laisad märkused ja t-stringid pakuvad jõudlust ja turvalisi malle.
  • Alaminterpretaatorid, vaba keermestamise täiustused ja vähem lukustusi suurendavad paralleelsust.
  • Zstandard, uued asĂĽnkroonimise tööriistad ja selgemad veaparandused muudavad igapäevaelu lihtsamaks.
  • Ohutu veatuvastus ja uus interpreter sabakõnedega parandavad nähtavust ja kiirust.

Python 3.14

Python kasvab ja kindlustab jätkuvalt oma positsiooni andmeteaduse, serveripoolse arendamise, automatiseerimise ja hariduse võtmetööriistana ning versioon 3.14 saabub täis muudatusi, mis mõjutavad jõudlust, samaaegsust ja igapäevast kasutuskogemust . Selles juhendis selgitame näidete ja konteksti abil, mis peitub kõikjal nähtavate akronüümide ja uute moodulite taga ning miks need täiustused mõjutavad nii algajaid kui ka tootmiskeskkonnas juurutavaid meeskondi.

Lisaks iga väljalaske ümber käivale tavapärasele kärale oleme siia kogunud kõige olulisemad ametlikult väljakuulutatud ja dokumenteeritud funktsioonid koos praktiliste üksikasjadega, mida on jaganud arendajad, kes juba kasutavad versiooni 3.14. Alates edasilükatud annotatsioonidest kuni standardteegi alaminterpretaatoriteni, sealhulgas t-stringid, Zstandard, uus turvaline silur ja REPL-i täiustused , on põhitõed siin selgelt lahti seletatud.

Ăślevaade: Mis Python 3.14-s tegelikult muutub

Python 3.14 avaldati 7. oktoobril ja see koondab implementatsiooni, API ja standardteegi muudatused, mis puudutavad mitmeid olulisi valdkondi. Ametlik dokumentatsioon säilitab traditsioonilise „Mis on uut” ja Misc/NEWS.d-st ehitatud muudatuste logi, mis toimib üksikasjaliku tegevuskavana, et näha rida-realt, mida on lisatud. Suurema pildi saamiseks: kasulikum paralleelsus, uued mallide loomise ja silumise võimalused, moderniseeritud tihenduspakend ja palju kasulikumad veateated.

Tegelikkuses tähendab see programme, kus on vähem lõimede konkurentsi, rohkem paralleelsusvõimalusi ilma GIL-i blokeerimata, vähem üllatusi annotatsioonidega ja interaktiivset konsooli, mis pigem aitab kui takistab. Lisaks toob kogukond ise esile praktilisi täiustusi, nagu värvid REPL-is ja PDB-s, argparse'i ja unittesti täiustused ning stdlib-utiliidid, mis lihtsustavad igapäevaseid ülesandeid.

Edasilükatud märkused: PEP 649 + PEP 749

Üks olulisemaid muudatusi on funktsioonide, klasside ja moodulite annotatsioonide edasilükatud hindamine. Nüüd ei hinnata neid enam defineerimisel, vaid salvestatakse need erifunktsioonidesse ja lahendatakse vastavalt vajadusele. See vähendab defineerimisaega, väldib edasiviidetest tingitud vigu ja muudab suurte tüüpide või kallite importimistoimingutega töötamise palju lihtsamaks.

Nende kontrollimiseks ilmub moodul annotationlib, millel on kolm peamist vormingut: VALUE (hindab endist käitusaja väärtusi), FORWARDREF (märkide nimed pole veel määratletud) ja STRING (tagastab märkused tekstina). Migratsioonide puhul annab ametliku dokumentatsiooni portimisplokk juhiseid koodi muutmise aja kohta, kuigi enamasti pole vaja midagi muuta..

Oluline detail: kui te kasutate from __future__ import annotations, selle konkreetne semantika kehtib endiselt, seega kontrollige oma tippimistööriistu. Üldine eesmärk on parandada jõudlust ja kasutatavust, säilitades samal ajal vajaduse korral enesevaatluse võimaluse..

Standardteegis olevad alaminterpretaatorid: PEP 734

CPython on aastakümneid lubanud C-API kaudu mitut interpreterit, kuid 3.14 toob need kõigile kättesaadavaks concurrent.interpreters. See avab ukse inimlikumale samaaegsusele ja tõelisele mitmetuumalisele paralleelsusele ilma, et peaks alati protsesse tõmbama..

Mida te võidate? Mudelid nagu CSP või actor mudelid, vaikimisi isolatsiooni koos selgesõnalise jagamise valikuga ja madalama ressursitarbimise võrreldes protsessidega. Protsessorit nõudvate rakenduste puhul on alates versioonist 3.12 interpretaatorid piisavalt isoleeritud, et töötada paralleelselt, avades stsenaariume, mida GIL varem takistas.

Esineb piiranguid: interpreteri käivitamine pole veel optimeeritud, mälukasutust saaks parandada, tegelikke jagamisvõimalusi on vähe. memoryviewja enamik PyPI laiendusi ilma täieliku toetuseta. Hea uudis on see, et standard sisaldab juba tuge, olemas on InterpreterPoolExecutor en concurrent.futuresja kogukond liigutab kiipe Cythonis, pybind11-s, nanobindis või PyO3-s..

T-nööri mallid: PEP 750

Saabuvad T-stringid, mallimehhanism f-stringi süntaksiga, kuid tagastab objekti. Template eraldi staatiliste osade ja interpolatsioonidega, mitte a str aasta lõpuks. See võimaldab teil sisu enne sellega liitumist töödelda, kasutaja sisendit puhastada ja kergeid DSL-e turvalisemalt kokku panna..

Sa kirjutad eesliitega t asemel f, sa kordad Template ja sa töötled iga fragmenti või interpolatsiooni oma maitse järgi. Alates HTML-i põgenemisest kuni DOM-laadse struktuuri loomise või atribuutide sõnastikke aktsepteerivate mallideni – saavutate paindlikkuse selgust ohverdamata..

Python 3.14 tutvustab turvalist liidest väliseks silumiseks: PEP 768

Versioon 3.14 tutvustab koormusvaba silumisliidest, mis võimaldab siluritel ja profiilijatel turvaliselt Pythoni töötavate protsessidega liituda. Enam pole ohtlikke lahendusi: nüüd on olemas ohutud käituspunktid silumiskoodi sisestamiseks ilma interpretaatori tavapärasest teest kõrvale kaldumata.

Selle hõlbustamiseks on see avatud sys.remote_exec(), mis saadab koodi, mis tuleb käivitada sihtprotsessi järgmises ohutus punktis. PEP kirjeldab alusprotokolli, sealhulgas turvakontrolle juurdepääsu piiramiseks ja kuritarvituste vältimiseks, mis on kõrge käideldavusega süsteemides võtmetähtsusega..

Uut tüüpi interpreter C-keeles sabakõnedega

Teine tehniline uudsus on alternatiivne interpreter, mis aheldab sabakõnesid väikeste C-funktsioonide vahel, mis rakendavad opkoode, suure asemel. switch. Toetatud platvormidel ja kompilaatoritel (Clang 19+ x86-64-l ja AArch64) näitavad esialgsed võrdlustestid 3–5% geomeetrilist paranemist..

See on valikuline ja PGO aktiveerimine on soovitatav, kuna see on tõestatud seadistus, mis toob kasumit. See on lubatud kompileerimisvalikuga --with-tail-call-interpja GCC peaks seda tulevikus toetama.

Vabakeermeline režiim: PEP 703 ja praktiline jõudlus

Versioonis 3.13 kasutusele võetud GIL-vaba režiim teeb versioonis 3.14 hüppe edasi: PEP 703-s välja toodud C-API muudatused on lõpule viidud ja ajutised lahendused on asendatud püsivate lahendustega. Selles režiimis on nüüd aktiivne spetsiaalne adaptiivne interpreter (PEP 659), mis koos muude optimeerimistega vähendab jõudluskaristust.

Tänapäeval on ühelõimelisuse kaotus umbes 5–10%, olenevalt platvormist ja kompilaatorist, mis on mõistlik hind võrreldes reaalse paralleelsuse kasuga. Windowsi puhul tuleb vabakeermelise ehituse laienduste kompileerimisel määratleda Py_GIL_DISABLEDja käitusajal saate seadeid kontrollida, kasutades sysconfig.get_config_var().

Lisaks ilmub lipp -X context_aware_warnings hoiatusfiltrite kontekstipõhiseks juhtimiseks, mis on GIL-ita versioonides vaikimisi lubatud ja seda haldavates versioonides keelatud. Saabub ka thread_inherit_context nii et loodud lõimed pärivad Context() kutsuja, mis mõjutab filtreid warnings, decimal ja muud API-d kontekstimuutujatega.

Palju kasulikumad veateated Python 3.14-s

Tõlgendaja pakub nüüd märksõnu, kui tuvastab Pythoni märksõnaga sarnase termini, mis aitab kiiresti kirjavigu tuvastada. Juhud, nagu näiteks "print" kirjutamine "print" asemel, on juba otseste vihjetega parandatud, kuigi kõiki variatsioone ei käsitleta.

Seal on konkreetsed sõnumid elif pärast a elseja tingimuslausetes näitab see puuduva expression kui paned lause järele else o pass/break/continue enne if. Samuti täpsustatakse valesti suletud stringide ja stringides olevate ühildumatute eesliidete põhjustatud vigu..

Rohkem täiustusi: selgemad sõnumid kasutamisel as ühildumatute sihtmärkidega impordis, välja arvatud mustrite sobitamine; üksikasjad mitte-räsimatava objekti lisamise kohta dict o set; ja märguandeid, kui sisenete sünkroonsesse kontekstihaldurisse koos async with või vastupidi. Kõik summeerub, et tõlk saaks teile öelda, mis, kus ja miks..

Kaasaegne tihendamine standardlib-is: PEP 784 ja Zstandard

Pakett on sĂĽndinud compression, mis reekspordib lzma, bz2, gzip y zlib kui compression.lzma, compression.bz2, compression.gzip y compression.zlib. Need uued nimed on eelistatud marsruut alates versioonist 3.14, kuigi klassikalised marsruudid pole praegu amortiseerunud..

Täht on compression.zstd, Zstandardi natiivne tugi koos seostega Meta zstd teeki. Saate kiired ja tõhusad API-d ning otsese toe Zstandardi failidele tarfile, zipfile y shutililma väliste pakettide installimiseta.

Asünksiooni enesevaatlus käsurealt

Nüüd saate kontrollida töötavaid Pythoni protsesse asünkroonsete ülesannetega, kasutades python -m asyncio ps PID y python -m asyncio pstree PID. Alamkäsk ps kuvab ülesannete, nimede ja pinude tasapinnalise tabeli; pstree genereerib asünkroonse kõnepuu..

See on eriti kasulik pikkade või blokeeritud programmide puhul, tuvastades kitsaskoha, millised ülesanded ootavad ja kuidas korutiinid üksteisega seotud on. Kui ootegraafikul on tsükleid, tuvastab tööriist need ja loetleb probleemsed teed.

Samaaegsete hoiatuste juhtimine Pythonis 3.14

warnings.catch_warnings Kui lipp on lubatud, saate hoiatusfiltrite jaoks kasutada kontekstimuutujat. context_aware_warnings kaudu -X või keskkonnamuutuja. Sel viisil on hoiatuste käsitlemine etteaimatav, kui segate lõime või asünkroonseid ülesandeid ja need ei kattu üksteisega..

Python 3.14 kasutajakogemus: konsool, Argparse, UnitTest ja palju muud

Need, kes on versiooni 3.14 oma põhiversioonina mitu kuud kasutanud, hindavad igapäevases kasutuses tehtud täiustusi: süntaksi esiletõstmine REPL-is ja PDB-s, Python 3 toe näited Kodis , parem abi argparse'is ja kasutajasõbralikumad sõnumid unittestis. Need detailid vähendavad hõõrdumist ja säästavad teid vajadusest hüpata redaktorisse, et aru saada, mis valesti on.

Interaktiivne konsool pakub parandusi levinud trükivigadele, näiteks klassikalisele "printn"-ile, mis nüüd viib teid print. Samuti on olemas nutikam impordi automaatne täitmine, mis aitab teil mooduleid avastada ilma viipast lahkumata..

Stdlib-is on väga praktilised utiliidid: kopeerimis- ja teisaldamismeetodid pathlib mis väldivad tõmbamist shutil põhitõdede jaoks a date.strptime otse ilma läbimata datetime.strptime().date()ja UUID v7, mis ühendab juhuslikkuse ajalise järjestatavusega. Väikesed otseteed, suur mõju sisemistele skriptidele ja tööriistadele.

argparse lisab valiku vea korral soovitusi , säästes seeläbi aega CLI silumisel; ja jah, t-stringid on juba hakanud looma väikest teekide ökosüsteemi, mis neid turvaliste mallide loomiseks kasutab. Kui töötate keerukate stringide või kasutaja sisendiga, märkate erinevust.

Paralleelsus, vähem blokeerimist ja protsessidega seotud üllatuste puudumine

Lõimede blokeerimise vähendamise eesmärk on mitu muudatust: standardlib-i alaminterpretaatorite ja GIL-vaba režiimi täiustamisega on koormuse tasakaalustamiseks rohkem võimalusi ilma ummikseisu sattumata. Paralleelsete ülesannetega teenuste ja teekide puhul tähendab see märgatavat läbilaskevõime paranemist.

Ka mitme protsessi loomisel muutub vaikekäitumine: `forkserver` on eelistatud ` fork`-ile , mis vähendab peeneid blokeerimisi ja muudab mitmeprotsessiliste stsenaariumide tõrked arusaadavamaks. Praktikas tähendab see vähem raskesti reprodutseeritavaid zombiprotsesse ja puhtamat diagnostikat.

Python 3.14 väljalaskegraafik ja küpsus

3.14 väljalasketsükli ajal teatas Pythoni meeskond mitmest alfaversioonist, sealhulgas Alpha 5-st, mis oli üks seitsmest beeta-eelsest versioonist, mis oli loodud uute funktsioonide testimiseks, vigade parandamiseks ja väljalaskeprotsessi täiustamiseks. Beetafaas algas 6. mail 2025 ilma uusi funktsioone tutvustamata ja võimaldas kohandusi kuni väljalaskekandidaadini 22. juulil.

Nagu ikka eelväljaannete perioodidel, ei ole eelväljaandeid tootmiskeskkondades soovitatav kasutada. Ametlik dokumentatsioon sisaldab reaalajas väljalasete kalendrit (PEP 745), probleemide jälgimist GitHubis ja juhiseid Python Software Foundationi kaudu panustamiseks. Kui leiate vea, muudavad Sphinxi loodud dokumentatsioon ja aruandluslingid selle avamise ja jälgimise lihtsaks.

Numbriline silmapilgutus: 3.14 ja mao aasta

Versiooninumbri ja pii ajalooliste lähenduste (3.14) kokkusattumus on kogukonnas tekitanud palju nalju, eriti mao aasta tähistatud kuukalendri ajal. Liu Xinist Zu Chongzhini on pii lähendamise kinnisidee peaaegu sama vana kui iteraatorite optimeerimine.

Lisaks anekdootidele avaldab see versioon austust ka sadade vabatahtlike ja ettevõtete ühistele pingutustele, kes panustavad oma inseneriteadmistega. PSF kui mittetulundusühing kutsub teid osalema, annetama ning tutvuma dokumentatsiooni ja näidetega seotud ajaloo ja litsentsidega.

Dokumentatsiooni on kuni viimase ajani pidevalt uuendatud, lisades redigeerimismärkmeid ja Sphinxi abil automatiseeritud ümberehitusi. Ootamatu käitumise korral kontrollige muudatuste logi ja jaotist „Mis on uut“, et leida uusimaid värskendusi, mis võiksid muudatust selgitada.

Kokkuvõttes täiustab Python 3.14 igapäevast kogemust, luues samal ajal aluse tulevikule: tõeline paralleelsus väiksema hõõrdumisega, turvalised ja väljendusrikkad mallid, takistusteta silumine ning tööriistad, mis selgitavad vigu paremini. Kui tulete versioonilt 3.13, märkate järkjärgulisi muudatusi ja uusi võimalusi; kui te pole mõnda versiooni uuendanud, muudab täiustuste summa uuendamise väärtuslikuks.

Kodi 22 kai
Seotud artikkel:
Kodi 22 Piers: mis on uut, allalaadimine ja mida alfaversioonilt oodata

Lisa eelistatud allikana Google'is