:

Szerző: Dr. Guta Gábor

2022. november 24. 09:05

Megjött a valaha kiadott leggyorsabb Python-verzió

Nemrégiben jelent meg a Python 3.11-es verziója, mely a korábbi verziókhoz képest - eddigi léptékekben mérve - óriási előrelépést hozott a sebesség tekintetében.

Bár verziószámozás tekintetében nem tűnik hatalmas előrelépésnek, mégis az eddigi egyik legjelentősebb frissítését kapta nemrég a Python a 3.11-es kiadással. A release egyik legnagyobb újdonsága, hogy átlagosan 25% gyorsulást ígér a korábbi változathoz képest (ami - a kód jellegétől függően - 10-60% eseti javulást jelent). Ebben a cikkben először a sebesség kérdését járjuk körbe, majd a végén áttekintjük a többi újdonságot is.

Need for Speed


Mennyire lehetséges egyáltalán egy hírhedten lassú, dinamikusan típusos nyelvnél kimagasló sebességet elérni? Talán érdemes a Java-ra gondolni, aminek a legelső változatai szintén nem a sebességükről voltak híresek. Érdemes tudni, hogy sokáig tudatosan a Python "virtuális gép" egyszerűen tartása prioritást élvezett a sebességéhez képest.

python

Biztonságkritikus rendszerek, rekordidő alatt (x)

Az autóipari beszállítók szegmensében egyedülállóan agilis szervezeti egységet hoz létre a thyssenkrupp.

Biztonságkritikus rendszerek, rekordidő alatt (x) Az autóipari beszállítók szegmensében egyedülállóan agilis szervezeti egységet hoz létre a thyssenkrupp.

A CPython jelenlegi változatánál tapasztalható sebességnövelés az egyik vezető fejlesztő, Mark Shannon által tett javaslattal kezdődött, ami négy fázist fogalmazott meg 2020 októberében. Ennek a tervnek a célja az, hogy kb. négy év alatt ötszörös sebességnövekedést lehessen elérni a Pythonnál.

A terv négy fázisa két csoportra bomlik: az első kettőben magát a meglévő Pythont futtató környezetet és értelmezőt szeretnék gyorsítani, míg a második két lépésben a Python virtuális gépbe futás idejű fordítást (JIT) terveznek bevezetni. A gyorsabb CPython (Faster CPython) projekten egy Microsoft által finanszírozott kis csapat dolgozik. Ennek a csapatnak a tagjai Guido von Rossum, Eric Snow és Mark Shannon.

Első rakétafokozat


A mostani változatba kerültek be az első lépés elemei, aminek a legfontosabb része a specializáló adaptív értelmező (PEP 659). Ez a kifejezések úgynevezett "típus stabilitásán" alapszik és képes arra, hogy ha egy bizonyos műveletsor rendszeresen azonos típusokkal hajtódik végre, akkor azt lényegesen gyorsabban futtassa. A másik változás a függvényhívások hatékonyabb végrehajtása a híváskor tárolandó adatok optimálisabb kezelésével (cheaper, lazy Python frames), valamint a hívandó függvény tartalmának beágyazásával (inlined Python function calls). Az utolsó változás pedig a gyorsabb értelmező indítás, ami kisebb programok futtatási idején javíthat lényegesen.

A sebesség optimalizáláson kívül két újdonságot emelnék ki a sok kisebb újdonságból: a pontos hiba lokalizációt és a kivételcsoportokat. A pontos hiba helymeghatározás a korábbi hibás soron és hiba típusán túlmenően pontosan jelzi, hogy az adott soron belül mi okozta a hibát (kivételt).

Ez többek között azt jelentheti, hogy egy több osztást tartalmazó kifejezés esetén jelzi a hibaüzenet, hogy melyik karakterpozícióban szereplő osztásnál történt kísérlet a nullával osztásra. A kivételcsoportok lehetővé teszik, hogy együttesen kezeljünk több nem összetartozó kivételt. Ehhez létrehoztak a fejlesztők egy ExceptionGroup osztályt, ami képes hivatkozást tárolni több kivételre, továbbá kibővítésre került a kivétel kezelési szintaxis az "except*" jelöléssel, amivel a kivétel csoportokat könnyebben lehet feldolgozni.

Reméljük sikerült mindenki érdeklődését felkeltenünk az új Pyhon kiadás iránt. Ezen a címen található az aktuális kiadás részletes változtatásainak a listája: https://www.python.org/downloads/release/python-3110/

Vendégszerzőnk Dr. Guta Gábor (Axonmatics) a Johannes Kepler Egyetemen végzett, számos kémiai-, bio-, egészségügyi-informatikai projekten dolgozott, Java és Python nyelven. A Szoftverfejlesztés okosan Pythonnal és a Pragmatic Python Programming című könyvek szerzője.

a címlapról