Asynchronous programming with asyncio in hindi
पाइथन प्रोग्रामिंग लैंग्वेज में एसिंक्रोनस प्रोग्रामिंग एक प्रोग्रामिंग टेक्निक मेथड या कांसेप्ट है, जो मौजूदा पाइथन प्रोग्राम में किसी एक टास्क को स्टार्ट करने, उस टास्क का वेट करने के दौरान अन्य प्रोग्रामिंग टास्क के कॉन्टिनियस टास्क रन करते रहने और फिर सिस्टम तैयार होने पर पहले वाले प्रोग्रामिंग टास्क पर दोबारा रिटर्न करने की परमिशन प्रोवाइड करता है।

पाइथन प्रोग्रामिंग लैंग्वेज में, एसिंक्रोनस प्रोग्रामिंग मुख्य रूप से asyncio मॉड्यूल के द्वारा सपोर्टेड है।
What is asynchronous programming in Python?
पाइथन प्रोग्रामिंग में नॉर्मल सिंक्रोनस प्रोग्रामिंग टास्क प्रोसेस में, यूजर प्रोग्रामर द्वारा डिफाइन एक से अधिक सिस्टम टास्क सामान्य रूप से एक के बाद एक रन या एक्सेक्यूट होते हैं।
Example of asynchronous programming Task.
प्रोग्रामिंग टास्क 1 → वेट प्रोसेस → कम्प्लीट
प्रोग्रामिंग टास्क 2 → वेट प्रोसेस → कम्प्लीट
प्रोग्रामिंग टास्क 3 → वेट प्रोसेस → कम्प्लीट
प्रोग्रामिंग टास्क 4 → वेट प्रोसेस → कम्प्लीट
प्रोग्रामिंग टास्क 5 → वेट प्रोसेस → कम्प्लीट
यहाँ इन एसिंक्रोनस प्रोग्रामिंग टास्क 1 में नेटवर्क सिस्टम रिस्पॉन्स का वेट कर रहा है, यहाँ मौजूदा प्रोग्राम को आगे बढ़ने से पहले टास्क प्रोसेस कम्पलीशन में वेट करना पड़ सकता है। पाइथन एसिंक्रोनस प्रोग्रामिंग के साथ, जब मौजूदा सिस्टम में टास्क 1 सिस्टम प्रोसेस में वेट कर रहा हो, तो उसी समय प्रोग्राम दूसरे अन्य सिस्टम टास्क पर भी टास्क कर सकता है.
प्रोग्रामिंग टास्क 1 → इंतज़ार ─────────→ पूरा
प्रोग्रामिंग टास्क 2 → काम → पूरा
प्रोग्रामिंग टास्क 3 → काम → पूरा
प्रोग्रामिंग टास्क 4 → काम → पूरा
प्रोग्रामिंग टास्क 5 → काम → पूरा
एसिंक्रोनस प्रोग्रामिंग टास्क आपके एप्लिकेशन को तब ज़्यादा एफ्फिसिएंट कर सकता है, जब वे एक्सटर्नल सिस्टम ऑपरेशन के लिए बहुत समय तक वेट करते रहते हैं।
What is asynchronous in Python?
पाइथन प्रोग्रामिंग लैंग्वेज में एसिंक्रोनस एक स्टैंडर्ड पायथन प्लगइन्स सिस्टम लाइब्रेरी है, जिसका यूज़ पाइथन यूजर किसी प्रोग्राम में एसिंक्रोनस/अवेट सिंटैक्स को यूज़ करके एक साथ प्रोग्राम सोर्स कोड क्रिएट कर सकते है।
एसिंक्रोनस प्रोग्रामिंग टास्क स्पेशली रूप से I/O-बाउंड ऑपरेशन के लिए अधिक यूज़फुल है. जैसे,
- नेटवर्क रिक्वेस्ट प्रोसेसिंग
- क्लाइंट सर्वर वेब सर्वर
- लार्ज डेटाबेस ऑपरेशन मैनेजमेंट
- डेटाबेस से डेटा पढ़ना और लिखना
- सिस्टम एपीआई के साथ कम्युनिकेट करना
- कई नेटवर्क सिस्टम डेटाबेस कनेक्शन को हैंडल करना
हर प्रोग्रामिंग एसिंक्रोनस सिस्टम में वेट कर रहे सिस्टम ऑपरेशन के लिए एक अलग थ्रेड क्रिएट करने के बदले, एक एसिंक्रोनस प्रोग्राम इवेंट लूप का यूज़ करके एक साथ कई टास्क को मैनेज या हैंडल कर सकते है।
async keyword in Python.
पाइथन प्रोग्रामिंग लैंग्वेज में async मॉड्यूल कीवर्ड का यूज़ एक एसिंक्रोनस फ़ंक्शन को क्रिएट या डिफाइन करने में किया जाता है, जिसे पाइथन में कोरूटीन के रूप में जाना जाता है।
Example of the async keyword.
import asyncio
async def message():
print(“Welcome, to Python”)
asyncio.run(message())
Output of the async keyword.
Welcome, to Python
यहाँ इस प्रोग्राम में फ़ंक्शन message() एक कोरूटीन फ़ंक्शन डिफाइन है।
await keyword in Python.
पाइथन प्रोग्रामिंग लैंग्वेज में await कीवर्ड का यूज़ एक पहले से एसिंक्रोनस फ़ंक्शन के अंदर दूसरे अन्य एसिंक्रोनस फ़ंक्शंन ऑपरेशन का वेट करने में किया जाता है।
Example of the await keyword.
import asyncio
async def task():
print(“Task is running”)
await asyncio.sleep(4)
print(“Task done”)
asyncio.run(task())
यहाँ await कीवर्ड में.
await asyncio.sleep(4)
इसका मतलब है कि मौजूदा प्रोग्रामिंग टास्क में कोरूटीन 4 सेकंड के लिए स्टॉप होता है। इस समय के दौरान, प्रोग्राम का इवेंट लूप दूसरे अन्य एसिंक्रोनस टास्क रन हो सकता है।
What is the event loop in Python programming?
पाइथन प्रोग्रामिंग में इवेंट लूप, एसिंक्रोनस प्रोग्रामिंग टास्क का एक सेंट्रल पार्ट या पोरशन है।
यह मौजूदा प्रोग्राम सिस्टम प्रोसेस में एसिंक्रोनस टास्क को हैंडल या मैनेज करता है, और फिक्स करता है कि सिस्टम में कौन सा टास्क पहले रन होना चाहिए। एक सिंपल पाइथन इवेंट लूप टास्क प्रोसेस कुछ ऐसा दिखता है.
सिस्टम प्रोग्रामिंग इवेंट लूप
↓
┌────────┼───────┐
↓ ↓ ↓
प्रोग्रामिंग टास्क 1 प्रोग्रामिंग टास्क 2 प्रोग्रामिंग टास्क 3
↓ ↓ ↓
प्रोसेस वेटिंग प्रोसेस रनिंग प्रोसेस वेटिंग
↓ ↓ ↓
└───────┼───────┘
↓
Task Continue.
जब मौजूदा सिस्टम प्रोसेस में एक टास्क I/O ऑपरेशन का वेट कर रहा हो, तो इवेंट लूप दूसरे अन्य सिस्टम टास्क को रन होने दे सकता है।
Running Multiple Tasks in Python Programming.
पाइथन प्रोग्रामिंग में asyncio कीवर्ड का एक बेस्ट एडवांटेज यह है कि पाइथन यूजर एक प्रोग्राम सिस्टम में एक साथ मल्टीप्ल एसिंक्रोनस टास्क एक साथ रन कर सकते हैं।
Example of Running Multiple Tasks.
import asyncio
async def process(empname, seconds):
print(f”{empname} running”)
await asyncio.sleep(seconds)
print(f”{empname} done”)
async def main():
await asyncio.gather(
process(“Process 1”, 2),
process(“Process 2”, 1),
process(“Process 3”, 3)
)
asyncio.run(main())
पाइथन प्रोग्रामिंग में यूजर डिफाइन टास्क एक ही समय में आगे बढ़ सकते हैं, इसके बदले कि हर सिस्टम प्रोग्राम टास्क के टर्मिनेट होने का वेट करके नेक्स्ट टास्क स्टार्ट किया जाए।
One possible output of asyncio.run(main()) is.
प्रोग्रामिंग प्रोसेस टास्क 1 स्टार्ट हुआ
प्रोग्रामिंग प्रोसेस टास्क 2 स्टार्ट हुआ
प्रोग्रामिंग प्रोसेस टास्क 3 स्टार्ट हुआ
प्रोग्रामिंग प्रोसेस टास्क 2 डन हुआ
प्रोग्रामिंग प्रोसेस टास्क 1 डन हुआ
प्रोग्रामिंग प्रोसेस टास्क 3 डन हुआ
यहाँ याद रखे, कि एक सिस्टम प्रोग्रामिंग टास्क 2, प्रोग्रामिंग टास्क 1 से पहले टर्मिनेट हो जाता है, चाहे इसमें प्रोग्रामिंग टास्क 1 पहले स्टार्ट हुआ हो।
asyncio.create_task() in Python.
पाइथन प्रोग्रामिंग में asyncio.create_task() फंक्शन मेथड का यूज़ कोरूटीन को सिस्टम प्रोग्रामिंग टास्क के रूप में शेड्यूल करने में किया जा सकता है।
Example of asyncio.create_task().
import asyncio
async def download():
print(“Data Downloading…”)
await asyncio.sleep(5)
print(“Data Download Process Is Done”)
async def main():
task = asyncio.create_task(download())
print(“You want another task…”)
await task
asyncio.run(main())
यहाँ इस टास्क प्रोसेस में डाउनलोड टास्क को तब शेड्यूल किया जा सकता है, जब प्रोग्राम दूसरे अन्य एसिंक्रोनस टास्क पर भी काम करता रहे।
Synchronous vs. Asynchronous Programming in Python.
Synchronous Python Programming.
प्रोग्रामिंग टास्क X → पूरा करें
↓
प्रोग्रामिंग टास्क Y → पूरा करें
↓
प्रोग्रामिंग टास्क Z → पूरा करें
यहाँ हर सिंक्रोनस टास्क सिस्टम में प्रीवियस टास्क का वेट करता है।
Asynchronous Python Programming.
प्रोग्रामिंग टास्क X → वेटिंग ───────→ कम्प्लीट
प्रोग्रामिंग टास्क Y → वर्क → कम्प्लीट
प्रोग्रामिंग टास्क Z → वेटिंग ───→ कम्प्लीट
जब एसिंक्रोनस टास्क प्रोग्राम वेटिंग आर्डर में हो, तो वह टास्क के बीच अपने आप स्विच कर सकता है।
Asynchronous vs. Threading Concepts in Python.
पाइथन प्रोग्रामिंग में एसिंक्रोनस और थ्रेडिंग दोनों I/O-बाउंड सिस्टम प्रोग्रामिंग ऑपरेशन टास्क के लिए बहुत ही यूज़फुल हो सकते हैं, लेकिन आप एसिंक्रोनस और थ्रेडिंग टास्क को अलग-अलग तरीके से इसमें यूज़ कर सकते हैं।
| Each feature | Asyncio module | Threading method |
| Execution model behaviour | Work with event loop concept | Wok like task in multiple threads |
| Main syntax | Declare with async / await keyword | Create with multiple threading task |
| Memory usages | It is shared within the module process | It is shared within the number of thread process |
| Context switching method | It is cooperative for task | It is managed by runtime/os method |
| Best uses for | Asyncio keyword used for large amounts of i/o-bound concurrency operation | Thread is used for i/o-bound tasks and apis, that are easier to use with blocking code method |
| Cpu-bound task | Asyncio module is not a solution by itself | Thread is not generally effective for cpu-bound python code in cpython library |
| Number of concurrent operations | Asyncio can handle many lightweight system program tasks | Many threads can have greater system overhead |
Advantages of Asynchronous in Python Programming.
Efficient I/O Management.
पाइथन प्रोग्रामिंग में एसिंक्रोनस टास्क कांसेप्ट तब बहुत यूज़फुल होता है, जब आपके एप्लिकेशन I/O सिस्टम प्रोग्राम टास्क के लिए बहुत समय तक वेट करते रहते हैं।
Handles multiple task connections.
यह उन सिस्टम प्रोग्रामिंग टास्क एप्लिकेशन के लिए यूज़फुल है, जिन्हें किसी सिस्टम में एक साथ कई नेटवर्क कनेक्शन को मैनेज करने की ज़रूरत होती है।
Reduced system task overhead.
एसिंक्रोनस प्रोग्रामिंग टास्क सामान्य रूप से लार्ज नंबर में थ्रेड क्रिएट करने की तुलना में लाइटवेट होते हैं।
Easier system task coordination.
Functions like.
asyncio.gather()
यह फंक्शन कई एसिंक्रोनस ऑपरेशन को एक साथ रन करना इजी करता हैं।
Useful for system network applications.
एसिंक्रोनस टास्क सामान्य रूप से इन सिस्टम एप्लीकेशन में यूज़ होता है.
- क्लाइंट सर्वर वेब सर्वर में
- WebSockets प्रोसेस
- APIs हैंडलिंग्स में
- नेटवर्क क्लाइंट रिक्वेस्ट मैनेजमेंट में
- एसिंक्रोनस डेटाबेस एक्सेस टास्क में
Limitations of Python asyncio programming.
- पाइथन में asyncio कीवर्ड लाइब्रेरी हर प्रोग्राम के लिए अपने आप फ़ास्ट प्रोसेस नहीं होता है।
- asyncio कीवर्ड लाइब्रेरी सबसे बेस्ट तब परफार्म करता है, जब प्रोग्राम सिस्टम टास्क I/O सिस्टम ऑपरेशन के वेट में काफ़ी समय लेते हैं।
Example of the asyncio keyword.
एक CPU-हैवी प्रोग्रामिंग सिस्टम टास्क ऑपरेशन में जैसे,
for p in range(100000000):
# complex calculation
pass
यहाँ इस प्रोसेस में सिस्टम इवेंट लूप को ब्लॉक कर सकता है, यदि यह डायरेक्ट एसिंक्रोनस प्रोग्राम के अंदर रन होता है।
हैवी सिस्टम CPU-इंटेंसिव प्रोग्रामिंग टास्क के लिए, किसी सिस्टम में मल्टीप्रोसेसिंग या स्पेशलाइज़्ड नेटिव लाइब्रेरी जैसे विकल्प ज़्यादा प्रॉपर और करेक्ट हो सकते हैं।
एक और ज़रूरी बात यह है कि ब्लॉकिंग फंक्शन को सामान्य रूप से डायरेक्ट इवेंट लूप के अंदर कॉल नहीं किया जाना चाहिए। क्योंकि वे दूसरे एसिंक्रोनस प्रोग्रामिंग टास्क को रन होने से रोक सकते हैं।
Example from the real world of synchronous and asynchronous programming.
माना की यहाँ एक पाइथन प्रोग्राम टास्क है, जिसमे 70 वेबसाइट की डाटा इनफार्मेशन को कलेक्ट करना है।
Synchronous data collection method.
वेबसाइट टास्क डाटा 1 → वेट → कम्प्लीट
वेबसाइट टास्क डाटा 2 → वेट → कम्प्लीट
वेबसाइट टास्क डाटा 3 → वेट → कम्प्लीट
वेबसाइट टास्क डाटा 4 → वेट → कम्प्लीट
वेबसाइट टास्क डाटा 5 → वेट → कम्प्लीट
…
वेबसाइट टास्क डाटा 70 → कम्प्लीट
इस सिस्टम प्रोसेस में बहुत समय लग सकता है, क्योंकि हर सिस्टम टास्क रिक्वेस्ट अपना ज़्यादातर समय वेट करने में बिता सकती है।
Asynchronous data collection method.
वेबसाइट डाटा रिक्वेस्ट 1 ── वेटिंग
वेबसाइट डाटा रिक्वेस्ट 2 ── वेटिंग
वेबसाइट डाटा रिक्वेस्ट 3 ── वेटिंग
वेबसाइट डाटा रिक्वेस्ट 4 ── रिस्पॉन्स
वेबसाइट डाटा रिक्वेस्ट 5 ── वेटिंग
…
जब सिस्टम में एक रिक्वेस्ट वेट कर रही होती है, तो इवेंट लूप दूसरी अन्य रिक्वेस्ट को आगे बढ़ने दे सकता है।
इस वजह से एसिंक्रोनस प्रोग्रामिंग स्पेशली रूप से नेटवर्क-हैवी एप्लिकेशन के लिए अधिक यूज़फुल है।
Essential asyncio features in Python.
| # | asyncio Module Term | Description in detail |
| 1. | Async keyword | Async keyword is used to defines a coroutine function task |
| 2. | Await keyword | Await keyword is used to Suspends a coroutine until an awaitable completes task |
| 3. | Coroutine keyword | An asynchronous function/object, that can be paused and resumed task |
| 4. | Event loop | It is used to Manages and schedules asynchronous system tasks |
| 5. | Task | User define A scheduled coroutine task or program method |
| 6. | asyncio.run() function | This function used to Runs an asynchronous entry-point coroutine |
| 7. | asyncio.gather() function | This function used to Runs multiple awaitables concurrently and collects their results |
| 8. | asyncio.sleep()function | This function used to Asynchronously waits for a specified amount of time |
Conclusion on asynchronous programming with asyncio.
पाइथन प्रोग्रामिंग लैंग्वेज में asyncio कीवर्ड लाइब्रेरी के साथ एसिंक्रोनस प्रोग्रामिंग, पाइथन प्रोग्राम्स को हर इंडिविजुअल प्रोग्राम टास्क के लिए अलग से थ्रेड क्रिएट करने की ज़रूरत के बिना कई I/O-बाउंड प्रोग्राम टास्क को अच्छे से हैंडल और मैनेज करने में हेल्प करती है।
The most important concepts of the asyncio keyword library are.
- async → यह कीवर्ड पाइथन प्रोग्राम में एसिंक्रोनस फ़ंक्शन को डिफाइन करता है
- await → यह कीवर्ड इवेंट लूप को ब्लॉक किए बिना प्रोग्राम टास्क प्रोसेस में वेट करता है
- event loop → यह कीवर्ड एसिंक्रोनस टास्क को अच्छे से मैनेज या हैंडल करता है
- asyncio → यह एक लाइब्रेरी या कीवर्ड मॉड्यूल है, जो पाइथन यूजर को एसिंक्रोनस प्रोग्रामिंग के लिए मल्टीप्ल टूल्स प्रोवाइड करता है
सिंपल टर्म में, asyncio लाइब्रेरी पाइथन यूजर को एक प्रोग्राम में टास्क को तब काम का काम करने देता है, जब दूसरा अन्य सिस्टम प्रोग्राम टास्क का वेट कर रहा हो, जिससे यह नेटवर्क एप्लिकेशन्स, सिस्टम APIs, वेब सर्वर्स और दूसरे अन्य I/O-हैवी सीपीयू बेस्ड प्रोग्राम्स टास्क के लिए स्पेशली रूप से हेल्पफुल है।

