free-threaded build, जो CPython 3.13 से एक ऑप्शनल इंटरप्रेटर के रूप में आती है, GIL हटा देती है ताकि कई थ्रेड्स एक साथ Python bytecode चला सकें। आपका कोड सच में कनकरेंट हो जाता है, यानी जिन races को GIL छिपा लेता था वे अब असली हैं। शेयर्ड म्यूटेबल स्टेट के चारों तरफ साफ तौर पर locks लगाने होंगे, और यह भी देखना होगा कि आपकी हर C extension इसे सपोर्ट करती है या नहीं।
इंटरव्यूअर यह क्यों पूछते हैं
यह उन लोगों को अलग करता है जो release notes पढ़ते हैं, उनसे जिनकी सीख Python 3.8 पर रुक गई। इंटरव्यूअर देख रहा है कि क्या आप जानते हैं GIL को एक विकल्प के तौर पर हटाया जा रहा है, पूरी तरह मिटाया नहीं गया, क्या आप native extensions पर पड़ने वाली इकोसिस्टम की कीमत समझते हैं, और क्या आपको अंदाजा है कि पुराने लॉक के नीचे जो कोड सुरक्षित लगता था वह थ्रेड्स के सच में एक साथ चलने पर शेयर्ड स्टेट खराब कर सकता है।
अपना जवाब कैसे स्ट्रक्चर करें
- साफ कहें कि यह एक ऑप्शनल build है, डिफॉल्ट नहीं।
- बताएं कि इससे कौन सा पैरेललिज्म खुलता है।
- शेयर्ड स्टेट पर आने वाली नई जिम्मेदारी बताएं।
- extensions की कंपैटिबिलिटी वाला सवाल उठाएं।
उदाहरण जवाब
Free threading 3.13 में एक experimental build के रूप में आई और तब से परिपक्व होती जा रही है, और अहम बात यह है कि यह एक अलग इंटरप्रेटर है जिसे आप खुद चुनते हैं, ऐसा कुछ नहीं जो चुपचाप सबके नीचे बदल गया हो। लॉक हटने के बाद दो थ्रेड्स एक साथ दो कोर पर bytecode चला सकते हैं, तो एक CPU bound वर्कर पूल आखिरकार process startup और pickling की कीमत चुकाए बिना स्केल करता है। सौदा शुद्धता का है। पुरानी build में बहुत सा लापरवाह कोड बिना synchronization के dict अपडेट करके बच निकलता था, क्योंकि bytecode boundary शायद ही कभी गलत जगह पड़ती थी। अब वे सच्ची data races हैं और आपको Lock या queue चाहिए। मैंने इसे एक scoring job पर आजमाया जो काम चार processes में बांट रही थी, और थ्रेड्स ने लगभग उतना ही throughput दिया, मेमोरी बहुत कम खाकर, क्योंकि मॉडल चार बार की जगह एक ही बार लोड रहा। प्रोडक्शन के लिए अड़चन extensions थीं। जिस भी चीज में C लेयर है उसे free threaded ABI के लिए दोबारा बिल्ड करना पड़ता है, तो इसे शिप करने से पहले मैं dependency tree का ऑडिट करूंगा और देखूंगा कि maintainers ने क्या पब्लिश किया है।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- Python कोड में data race आप कैसे ढूंढेंगे?
- उस build में सिंगल थ्रेडेड परफॉर्मेंस की कीमत क्या है?
- क्या आप इसे आज प्रोडक्शन में भेजेंगे?
Python डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें