Global Interpreter Lock¶
Pythoni mälu toimub viiteloendusega (reference counting
), et mitu lõime ei saaks samaaegselt muuta ühe objekti viitearvu ja tekitada võistlusseisud race conditions, millele järgneks mälu leke või rakenduse kokkujooksmine.

Lahendus oleks olnud luua luku igale objektile, kuid see:
oleks tohutult aeglane (palju lukustamisi ja vabastamisi),
võiks põhjustada tõrkeseisundeid deadlock.
mitmed C-laiendused (nt NumPy) kirjutati eeldusel, et GIL tagab turvalisuse.
GIL
lahendus on üksainus lukk kogu CPython interpreetorile.

Paralleelsust saab Pythonis:
- Lisades
--disable-gil
konfiguratsiooni. Mitmelõimelisuse turvalisuseks: viitearvestus lahendati
biased reference counting
,immortalization
, jadeferred reference counting
-uga.konteineri-tüüp andmestruktuuridele (nt
listid
,dict
) kerge luku andmisegatõrkeseisundist lahtisaamine
stop-the-world
pausiga.
- Lisades
- Aga seda tehes tasub arvestada,
Borrowed references
võib vajada turvalisemaidAPI
-sid.Laiendused, mis eeldavad GIL-i, vajavad lisalukustamist
Ühelõimelise programmi korral aeglasem töötamine
.whl
-failid peavad looma uue baitkoodiBuild
-isGIL
-ita
Kasutades teisi interpreetoreid –
Jython
(Java
),IronPython
(C#
),PyPy
(JIT
).Kasutades
multiprocessing
moodul – iga protsessil on oma interpreetor.
