Python Dispatch: Rendere il GIL opzionale
Il Consiglio direttivo ha fatto un grande annuncio sul futuro di Python. In particolare, hanno deciso di rendere il Global Interpreter Lock (GIL) opzionale in CPython e di eliminarlo del tutto.
Si tratta di una decisione enorme che modificherà radicalmente Python.
Per questo motivo, in questo post, illustrerò cos'è la GIL, i suoi vantaggi e svantaggi e cosa ci riserva il futuro.
Il GIL
Esaminiamo il Global Interpreter Lock una parola alla volta in ordine inverso, partendo da serratura e poi interprete e infine, globale.
Un blocco è un meccanismo che consente l'esecuzione di un solo thread alla volta. Quando un thread ottiene il blocco, ottiene l'accesso esclusivo all'interprete Python.
Un L'interprete è il programma per l'esecuzione del codice Python..
Il termine "globale" si riferisce all'ambito del blocco dell'interprete. Poiché il blocco dell'interprete è globale, garantisce che solo un thread alla volta esegua il codice Python all'interno di un singolo processo.
Quindi il GIL è un meccanismo che impedisce l'esecuzione di più thread contemporaneamente attraverso l'interprete. Ma perché si dovrebbe volere questo?
Vantaggi
Il vantaggio principale del GIL è che rende le cose più semplici. La gestione della memoria è più semplice, la gestione dei thread è più semplice e la creazione di moduli è più semplice.
Senza il GIL, si può incorrere rapidamente in problemi con il multithreading. Se non si inseriscono i blocchi locali corretti per ogni thread, si potrebbe finire per mandare in crash Python o corrompere qualche altra memoria del computer.
E se non siete in multithreading, il GIL è molto utile, perché fa sì che tutto fili liscio.
Quindi il GIL mantiene le cose semplici e sicure.
Allora perché non dovresti volerlo?
Svantaggi
Il compromesso è tra facilità e velocità.
Impedendo il multithreading, il GIL rende CPython più lento e meno performante di altri linguaggi (come C++, Go e Rust).
Soprattutto con l'esplosione dell'IA negli ultimi mesi, il GIL sta diventando sempre più un problema nell'esecuzione di programmi in modo rapido ed efficiente.
Il futuro della GIL
Quindi, ora che il Consiglio direttivo ha annunciato di aver accettato la Proposta di miglioramento di Python (PEP) 703, scritta da Sam GrossStiamo entrando in acque inesplorate.
Innumerevoli estensioni sono state scritte tenendo conto del GIL. Tutti gli standard definiti con CPython dipendono dal GIL. Tutti costruiscono in CPython con il GIL al centro dei loro programmi (intenzionalmente o meno).
Pertanto, il Consiglio direttivo sta inizialmente rendendo la GIL facoltativa, ma a lungo termine prevede di eliminarla completamente.
Come si legge nel post, "non vogliamo creare una divisione permanente tra build con e senza GIL (e moduli di estensione)".
Questo trasformerà assolutamente Python e, cosa forse più interessante, in modi che nessuno conosce ancora. Brett Cannon, in un sondaggio al team di sviluppatori di base, ha scritto che "rendere Python free-thread... ha molte incognite. Non sappiamo quanto codice si affidi implicitamente al GIL, o sia thread-unsafe in modi sottili che vengono mascherati dal GIL".
La GIL sta scomparendo: cosa porterà con sé?
E, soprattutto, che aspetto avrà il nuovo CPython?