Der Free-Threaded Build, seit CPython 3.13 als optionaler Interpreter ausgeliefert, entfernt das GIL, sodass mehrere Threads Python-Bytecode parallel ausführen können. Dein Code wird echt nebenläufig, und damit werden Races, die das GIL früher versteckt hat, real. Du brauchst explizite Locks um geteilten veränderlichen Zustand, und du musst prüfen, ob jede C-Extension, von der du abhängst, das unterstützt.
Warum Interviewer das fragen
Das trennt Leute, die Release Notes lesen, von Leuten, die bei Python 3.8 aufgehört haben zu lernen. Der Interviewer prüft, ob du weißt, dass das GIL als Option entfernt und nicht ersatzlos gestrichen wird, ob du die Kosten im Ökosystem rund um native Extensions kennst und ob dir klar ist, dass Code, der unter dem alten Lock sicher aussah, geteilten Zustand zerschießen kann, sobald Threads wirklich gleichzeitig laufen.
So baust du deine Antwort auf
- Sag, dass es ein optionaler Build ist und nicht der Standard.
- Erklär, welche Parallelität er freischaltet.
- Nenn die neue Korrektheitslast bei geteiltem Zustand.
- Erwähn die Frage der Extension-Kompatibilität.
Beispielantwort
Free Threading kam in 3.13 als experimenteller Build und ist seitdem gereift, und der entscheidende Punkt ist, dass es ein separater Interpreter ist, für den du dich aktiv entscheidest, und nicht etwas, das sich klammheimlich unter allen geändert hätte. Ohne Lock können zwei Threads gleichzeitig Bytecode auf zwei Kernen ausführen, sodass ein CPU-lastiger Worker-Pool endlich skaliert, ohne Prozessstart und Pickling zu bezahlen. Der Preis ist Korrektheit. Unter dem alten Build ist eine Menge schlampiger Code mit unsynchronisierten dict-Updates davongekommen, weil eine Bytecode-Grenze selten an der falschen Stelle lag. Jetzt sind das ehrliche Data Races und du brauchst ein Lock oder eine Queue. Ich habe es an einem Scoring-Job probiert, der Arbeit auf vier Prozesse verteilt hat, und Threads haben ähnlichen Durchsatz bei deutlich kleinerem Speicherbedarf gebracht, weil das Modell einmal geladen blieb statt viermal. Der Blocker für Produktion waren die Extensions. Alles mit einer C-Schicht muss gegen das Free-Threaded ABI neu gebaut werden, also würde ich vor dem Ausrollen den Dependency-Baum durchgehen und prüfen, was die Maintainer veröffentlicht haben.
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 esNachfragen, mit denen du rechnen solltest
- Wie würdest du ein Data Race in Python-Code finden?
- Was kostet dieser Build an Single-Threaded-Performance?
- Würdest du ihn heute in Produktion schicken?
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