Python में Async Programming क्या है?
Async Programming कोड लिखने का एक तरीका है जिसमें कार्य एक के बाद एक नहीं, बल्कि समानांतर या इवेंट के इंतजार के दौरान मुख्य प्रवाह को ब्लॉक किए बिना चलते हैं। आधुनिक प्रोग्रामिंग में संसाधनों और समय का कुशल उपयोग बहुत महत्वपूर्ण है।
Async Programming से ये संभव है:
- कार्यों का तेज़ निष्पादन
- प्रोग्राम की प्रतिक्रिया क्षमता में सुधार
- सिस्टम संसाधनों का बेहतर उपयोग
Async Programming के मुख्य लाभ
उपयोग के क्षेत्र
Async Programming विशेष रूप से इनपुट-आउटपुट ऑपरेशन के लिए उपयोगी है:
- फ़ाइलों के साथ काम करना
- नेटवर्क अनुरोध (HTTP API)
- डेटाबेस के साथ इंटरैक्शन
- वेब-सॉकेट प्रोसेसिंग
- बड़े डेटा सेट का पार्सिंग
मल्टीथ्रेडिंग से अंतर
मल्टीथ्रेडिंग के विपरीत, Async Programming में अतिरिक्त थ्रेड या प्रोसेस बनाने की जरूरत नहीं होती। इससे सिस्टम पर लोड कम होता है और थ्रेड्स के बीच लॉकिंग या डेटा सिंक्रोनाइज़ेशन की समस्याओं से बचा जा सकता है।
Python में Async Programming कैसे काम करता है
Python asyncio मॉड्यूल के माध्यम से Async Programming के लिए बिल्ट-इन सपोर्ट प्रदान करता है, जिसे Python 3.4 से स्टैंडर्ड लाइब्रेरी में जोड़ा गया था।
मुख्य अवधारणाएँ
async def— एक async फंक्शन (कोरूटीन) को परिभाषित करता हैawait— बताता है कि कोरूटीन के पूरा होने तक इंतजार करना हैasyncio— async कार्यों के साथ काम करने के लिए स्टैंडर्ड मॉड्यूलevent loop— इवेंट प्रोसेसिंग लूप, जो कोरूटीन के निष्पादन को नियंत्रित करता है
Async फंक्शन का बेसिक उदाहरण
import asyncio
async def greet():
print("नमस्ते!")
await asyncio.sleep(1)
print("1 सेकंड बीत गया")
asyncio.run(greet())
इस उदाहरण में await asyncio.sleep(1) एक संसाधन-गहन ऑपरेशन, जैसे नेटवर्क अनुरोध, के इंतजार का अनुकरण करता है।
Async फंक्शन बनाना और उपयोग करना
Async फंक्शन को परिभाषित करना
Async फंक्शन बनाने के लिए फंक्शन की परिभाषा से पहले async कीवर्ड का उपयोग करें:
async def fetch_data():
print("डेटा का अनुरोध...")
await asyncio.sleep(2)
print("डेटा प्राप्त हुआ")
Async फंक्शन को कॉल करना
Async फंक्शन को asyncio.run() के माध्यम से कॉल किया जाता है:
asyncio.run(fetch_data())
एक साथ कई कार्यों को चलाना
asyncio.gather() का उपयोग
एक साथ कई कोरूटीन चलाने के लिए asyncio.gather() का उपयोग करें:
async def task(name, delay):
print(f"कार्य {name} शुरू")
await asyncio.sleep(delay)
print(f"कार्य {name} पूरा हुआ")
async def main():
await asyncio.gather(
task("A", 2),
task("B", 1),
task("C", 3)
)
asyncio.run(main())
कार्य शुरू करने के अन्य तरीके
asyncio.gather() के अलावा, आप इसका उपयोग कर सकते हैं:
asyncio.create_task()— अलग-अलग कार्य बनाने के लिएasyncio.wait()— अतिरिक्त सेटिंग्स के साथ कार्यों के पूरा होने की प्रतीक्षा करने के लिएasyncio.as_completed()— जैसे ही परिणाम तैयार हों, उन्हें प्राप्त करने के लिए
Async इटरेटर और जनरेटर
Async इटरेटर बनाना
डेटा स्ट्रीम को Async तरीके से प्रोसेस करने के लिए Async इटरेटर का उपयोग करें:
class AsyncCounter:
def __init__(self, max_count):
self.max_count = max_count
s