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.
A Gitlab mint DevSecOps platform (x) Gyere el Radovan Baćović (Gitlab, Data Engineer) előadására a november 7-i DevOps Natives meetupon.
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/