सबसे पहले, official documentation on itertools में कुछ भी नहीं कहता कि वे थ्रेड-सुरक्षित हैं। तो ऐसा लगता है कि विनिर्देशन द्वारा पाइथन इसके बारे में कुछ भी गारंटी नहीं देता है। यह ज्योथन या पायपी जैसे कार्यान्वयन में अलग हो सकता है, लेकिन इसका मतलब है कि आपका कोड शायद पोर्टेबल नहीं होगा।
दूसरा, अधिकांश itertools
(सरल लोगों के अपवाद के साथ, count
) अन्य इटरेटर को उनके इनपुट के रूप में लें। थ्रेड-सुरक्षित तरीके से आपको इन इटरेटर को सही तरीके से व्यवहार करने की आवश्यकता होगी।
तीसरा, कुछ थियेटर द्वारा अलग-अलग उपयोग किए जाने पर कुछ इटरेटर समझ में नहीं आते हैं। उदाहरण के लिए izip
एकाधिक धागे में काम कर कई स्रोतों से तत्वों को ले जाने की दौड़ की स्थिति में हो सकता है, विशेष रूप से समकक्ष पायथन कोड द्वारा परिभाषित किया गया है (क्या होगा जब एक थ्रेड केवल एक इनपुट इटरेटर से मूल्य ले लेगा, फिर उनमें से दो से दूसरा धागा ?)।
भी ध्यान रखें कि प्रलेखन का उल्लेख नहीं है कि itertools
सी में लागू किया जाता है हम जानते हैं (एक कार्यान्वयन विस्तार के रूप में) है कि CPython के itertools
वास्तव में सी में लिखे हैं, लेकिन अन्य कार्यान्वयन पर वे खुशी से जनरेटर के रूप में लागू किया जा सकता है, और आप question you cited पर वापस जा सकते हैं।
तो, नहीं, आप यह नहीं मान सकते कि वे थ्रेड-सुरक्षित हैं जब तक कि आप अपने लक्षित पायथन प्लेटफॉर्म के कार्यान्वयन विवरण नहीं जानते।