Ho appena visto this section of Unladen Swallow's documentation venire su Hacker News. Fondamentalmente, sono gli ingegneri di Google a dire che non sono ottimisti sulla rimozione di GIL. Tuttavia, sembra che ci sia una discussione sul garbage collector intervallato da questo discorso sul GIL. Qualcuno potrebbe spiegare la relazione con me?Che cosa ha a che fare GIL Python con il garbage collector?
risposta
La versione molto breve è che attualmente Python gestisce la memoria con un conteggio dei riferimenti + un contrassegno & schema di raccolta del ciclo di sweep, ottimizzato per la latenza (invece del throughput).
Questo va bene quando c'è un solo thread mutante, ma in un sistema multi-thread, è necessario sincronizzare tutte le volte che si modificano i conti, oppure si può avere valori "cadere attraverso le crepe", e i primitivi di sincronizzazione sono piuttosto costosi sull'hardware contemporaneo.
Se refcounts non sono state modificate così spesso, questo non sarebbe un problema, ma praticamente ogni singola operazione si fa in CPython può causare un refcount a cambiare qualche parte, quindi le opzioni sono o GIL, facendo refcounts con alcuni tipo di sincronizzazione (e letteralmente trascorri quasi tutto il tuo tempo alla sincronizzazione), o abbandonare il sistema di conteggio per una sorta di vero e proprio garbage collector.
La risposta del tonno-pesce fondamentalmente la copre. Se volete maggiori dettagli, c'è stata una discussione su come il GIL potrebbe essere rimosso senza dover troppo molto di un effetto sul riferimento contando qui: http://mail.python.org/pipermail/python-ideas/2009-October/006264.html
Il suggerimento in quel collegamento era ingenuo. L'utilizzo del confronto e scambio per il conteggio dei riferimenti è troppo lento. –
Ho appena trovato un altro punto di vista su questo argomento qui: http://renesd.blogspot.com/2009/12/python-gil-unladen-swallow-reference.html
Bene, leggi informazioni su GIL. http://wiki.python.org/moin/GlobalInterpreterLock Come puoi vedere, è tutto basato sulla gestione della memoria. –