Właśnie widziałem this section of Unladen Swallow's documentation wymyślone w Wiadomościach Hackera. Zasadniczo inżynierowie Google twierdzą, że nie są optymistami w usuwaniu GIL. Wydaje się jednak, że dyskusja na temat śmieciarza przeplata się z tym wykładem o GIL. Czy ktoś mógłby wyjaśnić mi związek?Co GIL Pythona ma wspólnego z śmieciarzem?
Odpowiedz
Bardzo krótka wersja polega na tym, że obecnie python zarządza pamięcią z licznikiem odwołań + znacznik & schemat cyklu zbierania danych, zoptymalizowany pod kątem opóźnień (zamiast przepustowości).
Wszystko jest w porządku, gdy istnieje tylko jeden mutujący wątek, ale w systemie wielowątkowym należy zsynchronizować wszystkie czasy modyfikacji refkont, albo też można mieć wartości "spaść przez pęknięcia", i prymitywy synchronizacji są dość kosztowne na współczesnym sprzęcie.
Jeśli refliksy nie były tak często zmieniane, nie byłoby to problemem, ale prawie każda operacja wykonywana w cpythonie może spowodować zmianę gdzieś rekuperacji, więc opcje są albo GIL, wykonując refcounts z niektórymi rodzaj synchronizacji (i dosłownie spędzaj prawie cały swój czas na synchronizacji) lub porzuć system refcounting dla jakiegoś prawdziwego śmieciarza.
Odpowiedź Tuna-Fish w zasadzie ją pokrywa. Jeśli chcesz więcej szczegółów, była dyskusja o tym, jak GIL można usunąć bez konieczności zbyt większego wpływu na odniesienie liczenia tutaj: http://mail.python.org/pipermail/python-ideas/2009-October/006264.html
Sugestia w tym linku była naiwna. Używanie porównania i zamiany do liczenia odwołań jest zbyt wolne. –
Właśnie znalazłem inny punkt widzenia na ten temat tutaj: http://renesd.blogspot.com/2009/12/python-gil-unladen-swallow-reference.html
Cóż, przeczytaj o GIL. http://wiki.python.org/moin/GlobalInterpreterLock Jak widać, wszystko zależy od zarządzania pamięcią. –