- Free-threaded CPython एक बड़ा बदलाव है, जो एक ही interpreter के भीतर कई threads को parallel में चलाने की अनुमति देता है
- यह CPython 3.13 में एक experimental feature के रूप में उपलब्ध है
- PEP 703 की बदौलत अब इसे GIL को disable करके चलाया जा सकता है
- यह performance सुधार, खासकर multi-thread performance के लिए महत्वपूर्ण है
- यह कई CPU cores का प्रभावी उपयोग संभव बनाता है
शानदार है, लेकिन समस्याएँ क्या हैं?
- CPython में free-threading को लागू करना अपने आप में एक बड़ा प्रयास है
- दो मुख्य समस्याएँ हैं: thread safety और ABI compatibility
- Thread safety: शुद्ध Python code बिना बदलाव के काम करता है, लेकिन दूसरी भाषाओं में लिखा गया code या CPython C API का उपयोग करने वाला code ऐसा न भी करे
- ABI compatibility: free-threaded interpreter का ABI अलग होता है, इसलिए extension modules वाले हर package को अतिरिक्त wheels बनानी होंगी
- Thread safety समस्याओं को समझना, सुधारना और test करना कठिन है
- उदाहरण: numpy#26690, pywavelets#758 आदि में intermittent failures हुए
आगे की योजना और टीम का काम
- free-threaded CPython के default बनने में अभी कुछ साल लगेंगे
- उम्मीद है कि Python 3.13 में कई projects compatibility पर काम करेंगे और
cp313t wheels को PyPI पर release करेंगे
- टीम ने कई महीनों से PyData stack के निचले हिस्से से काम शुरू किया है
- हर package के लिए मिलती-जुलती approach अपनाई गई है:
- पहला CI job जोड़ना
- thread safety और shared/global state की समस्याएँ ठीक करना
- wheel build CI jobs में free-threaded support जोड़ना
- local में stress test करना और CI jobs की निगरानी करना
- extension modules को GIL के बिना चल सकने योग्य के रूप में चिह्नित करना
- अगले package पर बढ़ना
GN⁺ का सारांश
- Free-threaded CPython एक महत्वपूर्ण बदलाव है, जो multi-thread performance को काफी बेहतर बना सकता है
- thread safety और ABI compatibility समस्याओं को हल करना सबसे बड़ी चुनौती है
- उम्मीद है कि Python 3.13 में कई projects compatibility पर काम कर पाएँगे और प्रयोग कर सकेंगे
- PyTorch जैसे बड़े packages और कई छोटे packages को भी इस बदलाव को अपनाना होगा
- संबंधित projects में PyO3 और PyTorch शामिल हैं
1 टिप्पणियां
Hacker News राय
Python के GIL हटने से कई संगठनों और प्रोजेक्ट्स को लगभग बिना अतिरिक्त मेहनत के performance में बड़ा सुधार करने का अवसर मिलेगा
macOS पर GIL-हटाया गया Python install करके चलाने का अनुभव साझा किया गया
Python की आसान writing और logic को पसंद करने वाला उपयोगकर्ता उम्मीद करता है कि GIL-हटाया गया approach, Python लिखने के मौजूदा तरीके जैसा ही रहे
Python 3 की प्रगति का सारांश दिया गया
याद किया गया कि 2007 के आसपास parallel processing अनिवार्य हो गई थी
PEP703 में बताया गया कि GIL हटने के बाद भी list का
appendoperation thread safety कैसे बनाए रखता हैGIL हटने से ML training और inference की प्रकृति कैसे बदलेगी, इसे लेकर उत्साह जताया गया
चिंता जताई गई कि जिन programmers ने असली multithreading कभी नहीं संभाली, वे नए subtle bugs ला सकते हैं
सवाल उठाया गया कि क्या single-thread performance में गिरावट गंभीर है
async के साथ यह कैसे काम करेगा, इसे लेकर जिज्ञासा व्यक्त की गई