Interviewfrage für Python-Entwickler

Kannst du erklären, was das GIL ist und was es tatsächlich schützt?

Worauf der Interviewer abzielt, wie du deine Antwort aufbaust und ein gesprochenes Beispiel zum Anpassen.

Kurzantwort

Das Global Interpreter Lock ist ein Mutex in CPython, der immer nur einen Thread Python-Bytecode ausführen lässt und damit den Interpreter-Zustand schützt, etwa Referenzzähler und interne Objektstrukturen. Das heißt, Threads bringen dir bei CPU-lastigem Python-Code keine parallele Beschleunigung, helfen aber weiterhin bei I/O, weil das Lock während blockierender Aufrufe und in C-Extensions freigegeben wird.

Warum Interviewer das fragen

Das ist die klassische Filterfrage für Python-Tiefe. Interviewer wollen hören, dass du verstehst, warum Threading bei I/O-lastiger Arbeit hilft und bei CPU-lastiger nicht, und dass du zu multiprocessing oder nativen Extensions greifst, wenn du echte Parallelität brauchst. Vage Antworten wie "Python kann keine Threads" verraten jemanden, der einen Spruch auswendig gelernt statt über die Runtime nachgedacht hat.

So baust du deine Antwort auf

  • Definiere das GIL in einem Satz.
  • Sag, was es schützt und warum CPython es hat.
  • Stell I/O-lastige und CPU-lastige Arbeit gegenüber.
  • Nenn die Notausgänge, die du tatsächlich nutzt.

Beispielantwort

Gesprochenes Beispiel, erste Person

Das GIL ist ein einzelnes Lock in CPython, das garantiert, dass zu jedem Zeitpunkt nur ein Thread Python-Bytecode ausführt. Es existiert, weil Reference Counting nicht thread-safe ist und ein Lock pro Objekt für den Single-Threaded-Fall, in dem der meiste Code lebt, langsamer wäre. Praktisch heißt das: Threads sind großartig zum Warten und nutzlos zum Rechnen. In einer Datenpipeline, an der ich gearbeitet habe, hatten wir einen Schritt, der etwa achthundert URLs abgeholt hat, und der Wechsel von der seriellen Schleife auf einen Thread-Pool hat ihn von rund neun Minuten auf unter eine gedrückt, weil jeder Worker sein Leben blockiert auf einem Socket verbringt und das Lock währenddessen freigibt. Der Parsing-Schritt daneben hat null davon gehabt, also haben wir den stattdessen in einen Process-Pool geschoben. Numpy und andere C-Extensions geben das Lock in lang laufenden nativen Aufrufen ebenfalls ab, weshalb schwere Array-Mathematik selbst in Threads parallel aussehen kann. Wenn mir jemand sagt, Python könne keine Nebenläufigkeit, frage ich meistens zurück, welche Art er meint.

Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.

So funktioniert es

Nachfragen, mit denen du rechnen solltest

  • Wie kommt multiprocessing dann daran vorbei?
  • Was passiert mit dem GIL, wenn eine C-Extension läuft?
  • Hast du dir den Free-Threaded Build angeschaut?

Weitere Fragen für Python-Entwickler

Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.

Meine Fragen vorhersagen

Üb die harten Fragen, bevor sie gestellt werden

Trainier mit einem Live-Copiloten und geh dann vorbereitet rein. Ein $29 Session Pass bringt dich durch das Vorstellungsgespräch, ohne Abo und ohne Bindung.

GhostPilot holen