एसिंक्रोनस प्रोग्रामिंग क्या है और इसकी आवश्यकता क्यों है
एसिंक्रोनस प्रोग्रामिंग आपको एक साथ कई ऑपरेशन चलाने की अनुमति देती है, बिना प्रत्येक के पूरा होने का इंतज़ार किए। यह हाई-परफॉर्मेंस एप्लिकेशन बनाने के लिए बहुत ज़रूरी है, जो धीमे ऑपरेशन के दौरान ब्लॉक न हों।
एसिंक्रोनसिटी के मुख्य लाभ
एसिंक्रोनसिटी निम्नलिखित स्थितियों में विशेष रूप से प्रभावी है:
- नेटवर्क रिक्वेस्ट (HTTP रिक्वेस्ट, REST API के साथ काम)
- फ़ाइल सिस्टम ऑपरेशन (बड़ी फ़ाइलों को पढ़ना और लिखना)
- डेटाबेस के साथ इंटरैक्शन (SQL क्वेरी, NoSQL ऑपरेशन)
- WebSocket कनेक्शन और real-time एप्लिकेशन
- वेब पेज पार्सिंग और डेटा स्क्रैपिंग
- मैसेज क्यू प्रोसेसिंग
asyncio लाइब्रेरी का परिचय
asyncio Python की एक स्टैंडर्ड लाइब्रेरी है जो event loop पर आधारित async कोड लिखने के लिए उपयोग होती है। यह Python 3.4 से उपलब्ध है और 3.7+ वर्जन में इसे काफी बेहतर बनाया गया है।
asyncio की मुख्य क्षमताएँ
asyncio की मदद से आप यह कर सकते हैं:
- कोरूटीन बनाना और उन्हें मैनेज करना
- एक साथ कई async टास्क चलाना
- हज़ारों कनेक्शन को कुशलता से हैंडल करना
- अन्य async लाइब्रेरी और फ्रेमवर्क के साथ इंटीग्रेट करना
asyncio की बुनियादी अवधारणाएँ
कोरूटीन (Coroutines)
कोरूटीन एक विशेष फंक्शन है जिसे रोका और बाद में फिर से शुरू किया जा सकता है। Python में कोरूटीन को async def कीवर्ड से डिफाइन किया जाता है।
import asyncio
async def greet():
print("नमस्ते!")
await asyncio.sleep(1)
print("1 सेकंड हो गया।")
# कोरूटीन चलाना
asyncio.run(greet())
await कीवर्ड
await का उपयोग कोरूटीन को तब तक रोकने के लिए किया जाता है जब तक कोई दूसरा async ऑपरेशन पूरा न हो जाए। यह कंट्रोल को event loop में वापस भेजने का मुख्य तरीका है।
async def delayed_message():
print("शुरू हो रहा है")
await asyncio.sleep(2)
print("2 सेकंड बाद मैसेज")
asyncio.run(delayed_message())
Event Loop (इवेंट लूप)
Event Loop asyncio का दिल है, यह सभी async टास्क के निष्पादन को मैनेज करता है। Python 3.7 से, async कोड चलाने के लिए asyncio.run() का उपयोग करने की सलाह दी जाती है।
# आधुनिक तरीका (Python 3.7+)
asyncio.run(main_coroutine())
# पुराना तरीका (Python 3.7 से पहले)
loop = asyncio.get_event_loop()
loop.run_until_complete(main_coroutine())
async टास्क बनाना और मैनेज करना
टास्क को समानांतर चलाना
async कोड की असली ताकत तब सामने आती है जब आप एक साथ कई टास्क चलाते हैं:
async def task(name, delay):
print(f"टास्क {name} शुरू")
await asyncio.sleep(delay)
print(f"टास्क {name} {delay} सेकंड बाद पूरा")
return f"{name} से परिणाम"
async def main():
# तरीका 1: asyncio.gather()
results = await asyncio.gather(
task("A", 2),
task("B", 1),
task("C", 3)
)
print("सभी परिणाम:", results)
asyncio.run(main())
asyncio.create_task() से टास्क बनाना
बेहतर नियंत्रण के लिए asyncio.create_task() का उपयोग करें:
async def main():
# टास्क बनाएँ
task_a = asyncio.create_task(task("A", 2))
task_b = asyncio.create_task(task("B", 1))
task_c = asyncio.create_task(task("C", 3))
# उनके पूरा होने का इंतज़ार करें
await task_a
await task_b
await task_c
asyncio.run(main())