अभी Free Threading Python में योगदान करने का अच्छा समय है
PyCon US 2025 में अब तक समझ में आई Free Threading Python की स्थिति को संक्षेप में समेटते हुए, मैं योगदान के तरीकों के बारे में भी लिखना चाहता हूँ।
Free Threading Python क्या है?
Free Threading Python एक ऐसा प्रोजेक्ट है जिसका लक्ष्य Python के GIL(Global Interpreter Lock) को हटाकर multi-threaded environment में performance बेहतर बनाना है। यह प्रोजेक्ट Python की multithreading performance सुधारने और CPU-bound कामों में बेहतर performance देने के लिए शुरू किया गया था।
यह अभी experimental stage में है, और इसे इस्तेमाल करने के लिए या तो दोबारा compile करके install करना होगा या uv के जरिए install करना होगा।
मौजूदा स्थिति
मैंने भी अभी केवल test ही किए हैं, लेकिन कहा जाता है कि ज़्यादातर pure Python libraries को इस्तेमाल करने में समस्या नहीं होती। लेकिन आम तौर पर बहुत-सी widely used libraries performance या implementation कारणों से C/C++ libraries को बुलाती हैं या खुद extension के रूप में implement की जाती हैं, इसलिए ऐसी libraries को Free Threading Python पर चलाने के लिए अलग-अलग उपाय अपनाने पड़ते हैं।
जब extension module का उपयोग होता है
ज़्यादातर लोग नीचे दिए गए तरीकों का उपयोग करते हैं, और एक porting guide भी उपलब्ध है।
- C API
- Cython
- PyBind11
- nanonbind
- PyO3
- f2py
CFFI को अभी support नहीं किया गया है, लेकिन Quansight का fork इस्तेमाल करके support संभव है।
Support न करने वाला issue मौजूद है, लेकिन CFFI ज़्यादातर interfacing के लिए इस्तेमाल होता है, इसलिए यह फैसला कुछ हद तक समझ में आता है। Fork किया गया CFFI इस्तेमाल करने पर Free Threading Python का उपयोग किया जा सकता है, लेकिन यह बहुत बारीक implementation नहीं लगता, इसलिए performance कुछ कम हो सकती है।
योगदान करने के तरीके
यहाँ से बात थोड़ी गहरे पानी में उतरने जैसी लग सकती है, लेकिन जब मैंने sprint में हिस्सा लिया तो माहौल काफ़ी सकारात्मक था, इसलिए अभी भी योगदान शुरू करने के लिए यह अच्छा समय लगता है। योगदान करने के कुछ तरीके ये हैं।
नीचे दिए गए संदर्भ देखकर जाँचें कि free-threading-python compatibility कैसी है
- Free-threaded Python Library Compatibility Checker
- 🧵 Free-Threaded Wheels
- Compatibility Status Tracking#
test करने के बाद issue दर्ज करें
पहले 3.13 free-threading Python install करें, फिर library install करके tests चलाएँ।
अगर संभव हो तो 3.14t version भी आज़माना अच्छा रहेगा, लेकिन वह अभी beta में है, इसलिए पहले 3.13 version से शुरू करना बेहतर है।
porting करके PR भेजें
यहाँ से चीज़ें थोड़ी मुश्किल हो जाती हैं। Multi-threading, तरह-तरह के system calls, और C/C++ तथा Python internals की कुछ समझ की ज़रूरत होती है।
सबसे कठिन बात यह है कि libraries अक्सर एक-दूसरे पर निर्भर होती हैं। यदि आपकी library किसी दूसरी library पर निर्भर है और वह अभी support नहीं करती, तो काम वहीं से शुरू करना पड़ता है।
मैंने भी sprint में भाग लेते हुए बस मोटे तौर पर ही समझा, लेकिन ढांचा कुछ इस तरह बनता है।
- fastapi -> uvicorn -> uvloop, cryptography, pycares
योगदान के तरीकों पर लेख लिखें
मैं अभी यही कर रहा हूँ, हालाँकि यह शायद पर्याप्त न हो। चलिए, इस बारे में लिखकर कई जगह साझा करते हैं।
free-threading-python के उपयोग के तरीके लिखें
इस विषय पर कोरियाई भाषा में सामग्री कम है, इसलिए performance test करके, उपयोग के तरीके लिखकर, और उन्हें व्यवस्थित करके लेख के रूप में साझा करना अच्छा रहेगा।
अभी योगदान क्यों करना चाहिए
मुझे open source ecosystem में रहते हुए लगभग 25 साल से थोड़ा ज़्यादा हो गया है। मैं कोई बहुत बड़ा open source contributor नहीं हूँ, लेकिन मेरे कई परिचित सक्रिय योगदानकर्ता हैं, और उनमें CPython Core Developer भी दो लोग हैं, इसके अलावा भी कई लोग हैं। उनसे बात करते हुए मेरे अंदर एक तरह की समझ बनी है।
जब कुछ भी स्थापित न हुआ हो, या बड़े बदलाव का दौर चल रहा हो, तब योगदान करना सबसे अच्छा रहता है। उदाहरण के लिए, Python के शुरुआती दौर में योगदान करने वाले Jang Hye ने और भी बहुत कुछ किया, लेकिन unicode और Korean codecs पर भी काम किया। उस समय बहुत कुछ मौजूद नहीं था, और मुख्य contributors को Korean codecs की जानकारी नहीं थी, इसलिए शायद उस दिशा में प्रवेश करना अपेक्षाकृत आसान रहा होगा। उसके बाद अगला बड़ा बदलाव Python 3 में संक्रमण का था। फिर उसके बाद asyncio का दौर आया, और उस क्षेत्र में Kim Jun-gi का नाम मुझे याद आता है, साथ ही और भी कई लोग थे। और अब एक नया feature आया है: free-threading। मुझे लगता है कि योगदान करने के लिए यही सबसे सही समय है।
दूसरी languages में अक्सर बदलाव company के फैसलों से होते हैं, या ऐसे frameworks में जिनका संचालन पहले से बड़ी कंपनियाँ करती हैं, इसलिए वहाँ बदलाव लाना आसान नहीं होता। बेशक Python भी बहुत आसान नहीं है, लेकिन यहाँ असंख्य libraries और frameworks मौजूद हैं, और अभी उन्हें एक-एक करके port किया जा सकता है। बहुत लोगों की ज़रूरत है, इसलिए यही वह समय है।
12 टिप्पणियां
Python के लोकप्रिय होने की एक बड़ी वजह यह भी थी कि इस तरह की multithreading तक पर विचार करने की ज़रूरत नहीं पड़ती थी। अगर ऐसी चीज़ों तक भी सोचना पड़े, तो आम लोगों के लिए यह आसानी से इस्तेमाल की जा सकने वाली भाषा नहीं रहेगी।
यह अभी भी एक optional feature है, और संभावना है कि multithreading आगे भी optional ही रहेगी। (जैसे option on करना, या अलग से install करना वगैरह)
मैं भी Type ज़्यादा इस्तेमाल नहीं करता, और free-threading performance issues की वजह से शायद इस्तेमाल करूँ, लेकिन मुझे लगता है कि इसका उपयोग बहुत सीमित रहेगा।
मैं इसे optional नहीं मान रहा हूँ। PEP 779 के मंज़ूर होने के बाद, आगे चलकर डिफ़ॉल्ट implementation को free-threaded में बदलना ही लक्ष्य है.
मकसद बस इतना था कि शायद इसे
typeकी तरह ज़्यादा सोचे बिना इस्तेमाल किया जा सके। हाहा.free threading Python, यह बिल्कुल भी आसान काम नहीं लगता। जैसे Pandora's box खोल रहे हों। अब तक छिपे हुए हर तरह के synchronization bug फैलने की संभावना है। और वे भी ऐसे जो runtime में बहुत कभी-कभार फटें। multi-threading development के दौरान जो सिरदर्द वाले मुद्दे थे, अब वे शायद Python में भी गंभीर रूप से सामने आने लगें। सिर्फ C परिवार की भाषाओं को देखें तो thread-safe न होने वाले functions के इस्तेमाल वाली जगहों पर तुरंत समस्या आ सकती है।
उम्मीद है ऐसा Agent आए जो अपने-आप porting और testing कर दे!
यह multi thread issue है, इसलिए यह आसान नहीं होगा।
आपको खुद build करने की ज़रूरत नहीं है; इसे deadsnakes या Windows और macOS के official installer से भी आसानी से install किया जा सकता है!
टाइपो बहुत हैं। T_T यहां अपडेट नहीं कर पाया, इसलिए ब्लॉग पर अपडेट कर दिया है।
नमस्ते, Google recommendation से यह लेख सामने आया तो मैं संपर्क कर रहा हूँ। मैंने विदेश में 5 साल Python development किया है (कुल 13 साल का सामान्य development अनुभव), लेकिन अभी कुछ समय के लिए कोरिया में आराम कर रहा हूँ। मैं योगदान देना चाहता हूँ.. क्या आप अपना email साझा कर सकते हैं? मैं आपसे संपर्क करना चाहता हूँ और इसके बारे में सीखना चाहता हूँ।
मेरा ईमेल josephroh@naver.com है। धन्यवाद।
मैंने ईमेल भेज दिया है। धन्यवाद।