कॉन्टेक्स्ट वेरिएबल के मान इसके कॉन्टेक्स्ट के आधार पर अलग-अलग हो सकते हैं। थ्रेड-लोकल स्टोरेज के विपरीत जहां प्रत्येक निष्पादन थ्रेड में एक वेरिएबल के लिए अलग-अलग मान हो सकता है, एक कॉन्टेक्स्ट वेरिएबल एक निष्पादन थ्रेड में कई कॉन्टेक्स्ट हो सकते हैं। यह समवर्ती असिंक्रोनस कार्यों में वेरिएबल्स को ट्रैक रखने में उपयोगी है।
ContextVar क्लास का उपयोग कॉन्टेक्स्ट वेरिएबल्स को घोषित करने और उनके साथ काम करने के लिए किया जाता है।
import contextvars
name = contextvars.ContextVar("name", default='Hello')
वैकल्पिक डिफ़ॉल्ट पैरामीटर ContextVar.get() द्वारा लौटाया जाता है जब वर्तमान कॉन्टेक्स्ट में वेरिएबल के लिए कोई मान नहीं मिलता है।
name: वेरिएबल का नाम। यह एक रीड-ओनली प्रॉपर्टी है।
ContextVar क्लास में निम्नलिखित मेथड परिभाषित हैं
| get() | वर्तमान कॉन्टेक्स्ट के लिए कॉन्टेक्स्ट वेरिएबल का मान लौटाएं। यदि वर्तमान कॉन्टेक्स्ट में वेरिएबल के लिए कोई मान नहीं है, तो मेथड -
|
| set() | वर्तमान कॉन्टेक्स्ट में कॉन्टेक्स्ट वेरिएबल के लिए एक नया मान सेट करने के लिए कॉल करें। |
| reset() | कॉन्टेक्स्ट वेरिएबल को उस मान पर रीसेट करें जो ContextVar.set() से पहले था जिसने टोकन बनाया था। |
contextvars मॉड्यूल में Context क्लास Context Vars का उनके मानों पर मैपिंग है।
Context(): बिना किसी मान के एक खाली कॉन्टेक्स्ट बनाता है।
वर्तमान कॉन्टेक्स्ट की एक प्रति प्राप्त करने के लिए copy_context() फंक्शन का उपयोग करें।
run(callable, *args, **kwargs) मेथड callable(*args, **kwargs) कोड को उस कॉन्टेक्स्ट ऑब्जेक्ट में निष्पादित करता है जिस पर run मेथड को बुलाया जाता है और निष्पादन का परिणाम लौटाता है। कॉल करने योग्य द्वारा किसी भी कॉन्टेक्स्ट वेरिएबल में किए गए परिवर्तन, कॉन्टेक्स्ट ऑब्जेक्ट में समाहित होंगे। जब एक ही कॉन्टेक्स्ट ऑब्जेक्ट पर एक से अधिक OS थ्रेड से बुलाया जाता है, या जब पुनरावर्ती रूप से बुलाया जाता है तो मेथड RuntimeError उठाता है।
| copy() | कॉन्टेक्स्ट ऑब्जेक्ट की एक शैलो कॉपी लौटाता है। |
| context[var] | var ContextVar वेरिएबल का मान लौटाता है। यदि वेरिएबल कॉन्टेक्स्ट ऑब्जेक्ट में सेट नहीं है, तो Key Error उठाया जाता है। |
| get() | यदि कॉन्टेक्स्ट ऑब्जेक्ट में मान है तो कॉन्टेक्स्ट वेर के लिए मान लौटाता है। अन्यथा, डिफ़ॉल्ट पर लौटाता है। यदि डिफ़ॉल्ट नहीं दिया गया है, तो None लौटाता है। |
| iter() | कॉन्टेक्स्ट ऑब्जेक्ट में संग्रहीत वेरिएबल्स पर एक इटरेटर लौटाता है। |
| len() | कॉन्टेक्स्ट ऑब्जेक्ट में सेट वेरिएबल्स की संख्या लौटाता है। |
| keys() | कॉन्टेक्स्ट ऑब्जेक्ट में सभी वेरिएबल्स की सूची लौटाता है। |
| values() | कॉन्टेक्स्ट ऑब्जेक्ट में सभी वेरिएबल्स के मानों की सूची लौटाता है। |
| items() | कॉन्टेक्स्ट ऑब्जेक्ट में सभी वेरिएबल्स और उनके मानों को समाहित करने वाले 2-टपल्स की सूची लौटाता है। |