Was verhindert der GIL tatsächlich, und wann helfen Threads trotzdem?
Der Global Interpreter Lock erlaubt immer nur einem Thread, Python-Bytecode auszuführen, weshalb reiner Python-Code nie parallel über Cores läuft. Threads helfen überall dort, wo die Arbeit aus Warten statt aus Rechnen besteht — Netzwerkaufrufe, Festplatte, Datenbank —, weil der Lock während blockierendem I/O freigegeben wird. Für CPU-lastige Arbeit braucht man Prozesse, eine C-Extension, die den GIL fallen lässt, oder man verlagert den heißen Teil aus Python heraus.