Asyncio के साथ पायथन में डिस्पैचर

May 08 2023
इवेंट-आधारित प्रोग्रामिंग क्या है?
घटना-आधारित प्रोग्रामिंग एक प्रोग्रामिंग प्रतिमान है जिसमें एक कार्यक्रम का प्रवाह क्रम में निष्पादित निर्देशों के अनुक्रम के बजाय घटित होने वाली घटनाओं द्वारा निर्धारित होता है। घटना-आधारित प्रोग्रामिंग में, प्रोग्राम निर्देशों के पूर्व निर्धारित सेट को निष्पादित करने के बजाय सिस्टम या पर्यावरण में घटनाओं का जवाब देता है।
अनस्प्लैश पर हितेश चौधरी द्वारा फोटो

घटना-आधारित प्रोग्रामिंग एक प्रोग्रामिंग प्रतिमान है जिसमें एक कार्यक्रम का प्रवाह क्रम में निष्पादित निर्देशों के अनुक्रम के बजाय घटित होने वाली घटनाओं द्वारा निर्धारित होता है। घटना-आधारित प्रोग्रामिंग में, प्रोग्राम निर्देशों के पूर्व निर्धारित सेट को निष्पादित करने के बजाय सिस्टम या पर्यावरण में घटनाओं का जवाब देता है।

विभिन्न स्रोत, जैसे कि उपयोगकर्ता इनपुट, सिस्टम ईवेंट, नेटवर्क गतिविधि या टाइमर, ईवेंट को ट्रिगर कर सकते हैं। जब कोई घटना होती है, तो प्रोग्राम उस विशिष्ट घटना को संभालने के लिए पंजीकृत एक या एक से अधिक कार्यों या कॉलबैक को निष्पादित करके उस पर प्रतिक्रिया कर सकता है। यह कार्यक्रम को अधिक लचीला और उत्तरदायी होने की अनुमति देता है, क्योंकि यह घटनाओं पर प्रतिक्रिया कर सकता है क्योंकि वे क्रियाओं के एक विशिष्ट अनुक्रम को पूरा करने की प्रतीक्षा करने के बजाय होते हैं।

इवेंट-आधारित प्रोग्रामिंग का उपयोग आमतौर पर ग्राफिकल यूजर इंटरफेस (जीयूआई) में किया जाता है, जहां माउस क्लिक या कीबोर्ड इनपुट जैसी उपयोगकर्ता क्रियाओं को उन घटनाओं के रूप में माना जाता है जो प्रोग्राम में क्रियाओं या अपडेट को ट्रिगर करती हैं। इसका उपयोग वेब विकास में भी किया जाता है, जहाँ HTTP अनुरोध या ब्राउज़र ईवेंट सर्वर-साइड या क्लाइंट-साइड कोड निष्पादन को ट्रिगर करते हैं। इवेंट-संचालित आर्किटेक्चर भी वितरित सिस्टम में अधिक सामान्य होते जा रहे हैं, जहां संदेश या ईवेंट विभिन्न सेवाओं या घटकों के बीच संवाद करते हैं।

डिस्पैचर

घटना-आधारित प्रोग्रामिंग के संदर्भ में, डिस्पैचर एक ऐसी वस्तु है जो घटनाओं को प्राप्त करती है और फिर उन्हें उपयुक्त ईवेंट हैंडलर्स को भेजती है। डिस्पैचर ईवेंट हैंडलर्स के पंजीकरण और डी-रजिस्ट्रेशन के प्रबंधन और यह सुनिश्चित करने के लिए जिम्मेदार है कि इवेंट्स को सही हैंडलर्स तक पहुंचाया जाए।

कुछ ईवेंट-चालित ढाँचों में, डिस्पैचर को ईवेंट बस या लूप कहा जाता है। ईवेंट बस विभिन्न स्रोतों से घटनाओं को प्राप्त करती है और उपयुक्त ईवेंट हैंडलर्स को भेजती है। इवेंट लूप इवेंट के जवाब में कॉरूटीन और कॉलबैक के शेड्यूलिंग और निष्पादन का प्रबंधन करता है।

डिस्पैचर अन्य कार्य भी कर सकता है, जैसे ईवेंट को फ़िल्टर करने और संसाधित करने से पहले, ईवेंट हैंडलर को भेजे जाने से पहले। उदाहरण के लिए, एक डिस्पैचर एक प्रकाशित-सदस्यता पैटर्न लागू कर सकता है, जहां घटनाओं को फ़िल्टर किया जाता है और केवल उन ईवेंट हैंडलर्स को भेजा जाता है जिन्होंने उन्हें प्राप्त करने के लिए सदस्यता ली है।

Asyncio के साथ Python में डिस्पैचर बनाएँ

पायथन में asyncio का उपयोग करके डिस्पैचर बनाने के लिए, आप asyncio.Queueएक क्यू बनाने के लिए क्लास का उपयोग कर सकते हैं जिसका उपयोग कोरटाइन के बीच संदेशों को पास करने के लिए किया जा सकता है। यहां सरल डिस्पैचर कार्यान्वयन का एक उदाहरण दिया गया है. एक फ़ाइल बनाएँ dispatcher.pyऔर निम्नलिखित कोड डालें:

import asyncio

async def producer(queue):
    for i in range(10):
        await asyncio.sleep(1)
        await queue.put(i)
    await queue.put(None)

async def consumer(queue):
    while True:
        item = await queue.get()
        if item is None:
            break
        print(f"Consumed: {item}")
        queue.task_done()

async def main():
    queue = asyncio.Queue()
    tasks = [
        asyncio.create_task(producer(queue)),
        asyncio.create_task(consumer(queue)),
    ]
    await asyncio.gather(*tasks)
    await queue.join()

asyncio.run(main())

कॉरूटीन में main, हम का एक उदाहरण बनाते हैं , और इसे कॉरूटीन और asyncio.Queueदोनों को पास करते हैं । फिर हम का उपयोग करके दोनों कॉरूटाइन के लिए कार्य बनाते हैं , और उन्हें साथ-साथ चलाने के लिए पास करते हैं। अंत में, हम सभी कार्यों के पूरा होने की प्रतीक्षा करने के लिए कहते हैं।producerconsumerasyncio.create_task()asyncio.gather()queue.join()

फ़ाइल को python3 dispatcher.py. आपको निम्न आउटपुट मिलेगा:

यह लेख यहाँ Github पर उपलब्ध कोड है:

निष्कर्ष

डिस्पैचर आम तौर पर ईवेंट-आधारित सिस्टम में ईवेंट प्रबंधित करने में महत्वपूर्ण भूमिका निभाता है। यह सुनिश्चित करता है कि घटनाओं को कुशलतापूर्वक और सटीक रूप से संसाधित किया जाता है और यह कि घटना संचालकों को आवश्यकतानुसार सही ढंग से पंजीकृत और अपंजीकृत किया जाता है।

इस लेख के लिए बस इतना ही! टिप्पणियों में प्रतिक्रिया या प्रश्न छोड़ने के लिए स्वतंत्र महसूस करें। यदि आपको यह एक रोमांचक पठन मिला है, तो कुछ तालियाँ छोड़ें और अनुसरण करें! प्रोत्साहित करना!