Python yaratıcısı Guido Van Rossum'un bu yayını , GIL'i Python'dan kaldırmak için erken bir girişimden bahsediyor:
Bu daha önce hayal kırıklığı yaratan sonuçlarla denendi, bu yüzden kendim için çok çaba göstermeye isteksizim. 1999 yılında Greg Stein (Mark Hammond ile birlikte), GIL'i kaldıran ve tüm değiştirilebilir veri yapılarında ince taneli kilitlerle değiştirilen bir Python (1.5 inanıyorum) çatalı üretti. Ayrıca kabul edilebilir küresel değişken veri yapılarına olan birçok güveni kaldıran yamalar gönderdi. Bununla birlikte, kıyaslamadan sonra, en hızlı kilitleme ilkeli (o sırada Windows) olan platformda bile, tek iş parçacıklı yürütmeyi neredeyse iki kat yavaşlattığı, yani iki CPU'da biraz daha fazla iş alabileceğiniz gösterilmiştir. GIL olmadan tek bir CPU yerine GIL olmadan yapılır. Bu yeterli değildi ve Greg'in yaması unutulmaya başladı. (Greg'in performans hakkındaki yazısına bakın.)
Gerçek sonuçlarla pek tartışamıyorum, ama bunun neden olduğunu gerçekten merak ediyorum. Muhtemelen, GIL'nin CPython'dan çıkarılmasının çok zor olmasının ana nedeni, referans sayma bellek yönetim sisteminden kaynaklanmaktadır. Tipik bir Python programı arayacak Py_INCREFve Py_DECREFbinlerce veya milyonlarca kez, kilitleri etrafına sararsak, onu kilit bir tartışma noktası haline getirecektir.
Ancak, atomik ilkellerin eklenmesinin neden tek bir dişli programını yavaşlattığını anlamıyorum . Her bir Python nesnesindeki refcount değişkeni atomik bir ilkel olacak şekilde CPython'u yeni değiştirdiğimizi varsayalım. Ve sonra sadece referans sayısını arttırmamız gerektiğinde atomik bir artış (getirme ve ekleme talimatı) yaparız. Bu, Python referans sayımını iş parçacığı açısından güvenli hale getirir ve tek iş parçacıklı bir uygulamada herhangi bir performans cezası olmamalıdır, çünkü kilit çekişmesi olmayacaktır.
Ama ne yazık ki, benden daha akıllı olan birçok insan denedi ve başarısız oldu, bu yüzden açıkçası burada bir şey eksik. Bu probleme bakmamın nesi yanlış?