Vedo spesso persone che parlano che GIL è per Interprete Python (anche qui su StackOverflow).Python GIL è veramente per interprete?
Ma quello che vedo nel codice sorgente sembra essere che GIL è una variabile globale e quindi c'è un GIL per tutti gli interpreti in ogni processo Python. So che l'hanno fatto perché non c'è alcun oggetto interprete passato come Lua o TCL, non è stato progettato bene all'inizio. E il thread storage locale sembra non essere portabile per i ragazzi di Python da usare.
È corretto? Ho dato un'occhiata alla versione 2.4 che sto usando in un progetto qui.
Questo era cambiato nelle versioni successive, in particolare nella 3.0?
Un sacco di progetti hanno rimosso il GIL da CPython in precedenza. Unladen Swallow non è il primo. Comunque non hanno funzionato bene come la versione GIL, quindi nessuno li usa. – nosklo
Inoltre, lo stackless non rimuove GIL. In effetti, qualsiasi operazione di blocco in qualsiasi micropiastra senza stack bloccherà l'intera applicazione. – nosklo
E Jython è così lento da essere inutilizzabile, a meno che non lo si usi solo per un plug-in di scripting in un programma java in cui la maggior parte del lavoro viene eseguita in Python. – Lothar