A Python ja discuteixen la proposta per eliminar GIL i obtenir un millor rendiment

Logotip de Python

Python és un llenguatge d'alt nivell de programació

Fa poc es va donar a conèixer la notícia que el Comitè Directiu del Projecte Python ha anunciat el desig d'aprovar la proposta de l'extensió del llenguatge Python «PEP-0703″, fer que el bloqueig d'intèrpret global sigui opcional a CPython i que bàsicament defineix la incorporació del mode de compilació de CPython sense Global Interpreter Lock (GIL).

PEP-0703 defineix deixar d'utilitzar GIL per defecte, però afegiu l'opció de compilació “–sin-gil” per deshabilitar-lo. Com tal es busca que la nova manera resolgui el problema amb la paral·lelització operacions en sistemes de múltiples nuclis, causat pel fet que el bloqueig global no permet l'accés paral·lel a objectes compartits des de diferents subprocessos.

S'esmenta que a llarg termini (després de 5 anys), està previst que l'intèrpret es canviï per defecte només en la manera sense bloqueig global, mentre que alhora deixarà d'admetre la compilació amb GIL.

Gràcies a tots per respondre a l'enquesta sobre la proposta de no-GIL. És clar que el sentiment general és positiu, tant per a la idea general com per al PEP 703 en particular. El Consell Directiu també és molt positiu en tots dos. Tenim la intenció d'acceptar PEP 703, encara que estem treballant encara en els detalls d'acceptació.

Com ho hem fet algunes vegades al passat, volem comunicar la nostra intenció d'acceptar el PEP juntament amb el nostre pensament actual sobre els detalls relacionats amb l'acceptació.

A més d'això, s'esmenta que els canvis que es planegen realitzar es duran a terme en tres etapes, les quals són a curt, mitjà i llarg termini. Ja que a la primera etapa, deshabilitar GIL per defecte no és pràctic degut a la sobrecàrrega associada amb els canvis al recol·lector d'escombraries, el sistema d'administració de memòria i les primitives per organitzar bloquejos. Per exemple, a causa de l'ús del recompte de referències per a l'aïllament de subprocessos, hi ha una disminució en el rendiment dels scripts d'un sol subprocés (en el conjunt de proves de pyperformance en un 10%). Alhora, pot ser necessari deshabilitar el GIL en computació científica, per a això la manca de paral·lelització és un problema més seriós que la velocitat lineal d'execució del codi.

A la segona etapa bàsicament s'esperarà la confirmació i que es compti amb el suficient suport de la comunitat perquè l'ús de “no-GIL sigui viable” i assegureu-vos que la compilació sense GIL sigui compatible però no predeterminada.

A la darrera etapa, no-GIL ja serà el valor predeterminat i s'eliminarà qualsevol vestigi de GIL (sense trencar innecessàriament la compatibilitat amb versions anteriors).

S'observa que el treball per allunyar-se de GIL es farà amb molt de compte per no repetir l'error que va passar en promocionar 3 Python: una compilació sense GIL haurà d'assegurar-se de mantenir la compatibilitat amb versions anteriors de Python i qualsevol canvi en el codi de tercers necessari per treballar en compilacions que no siguin GIL també hauria de funcionar en compilacions GIL.

No hi ha plans per tornar a numerar les versions a Python 4 per a compilacions que no siguin GIL, ja que mantindran la compatibilitat amb ABI.

Al llarg del procés, nosaltres (els desenvolupadors principals, no només el SC) necessitarem tornar a avaluar el progrés i els terminis suggerits. No volem que això es converteixi en una altra lluita de compatibilitat amb versions anteriors de deu anys, i volem poder cancel·lar PEP 703 i trobar una altra solució si sembla que es torna problemàtic, per la qual cosa hem de verificar regularment que el treball continu és val la pena.

Esperem que això brindi una certa claredat sobre el futur del PEP mentre treballem en els detalls exactes d'acceptació. L'SC treballarà per finalitzar l'acceptació les properes setmanes.

Abans de la transició completa a les compilacions que no són GIL, es planeja aconseguir un suport complet de la comunitat per a aquestes compilacions, així com proporcionar API de C i API de Python addicionals per habilitar subprocessos múltiples assegurances al codi existent.

Finalment com ja es menciono es preveu que la transició a la tercera etapa pugui ocórrer almenys en 5 anys i la data probable per a PEP-0703 és el llançament de Python 3.13, programat per a la propera tardor.

si estàs interessat a poder conèixer més sobre això, Pots consultar els detalls en el següent enllaç.