2012-10-25 20 views
5
में

संभव डुप्लिकेट:
Event loop implementation for Python 3?बेसिक घटना लूप अजगर

मैं python2.7 में एक घटना पाश को लागू करने की कोशिश कर रहा हूँ। मैं एक समय घटना के आधार पर और अन्य कार्यवाही के परिणामस्वरूप घटनाओं को ट्रिगर करने में सक्षम होना चाहता हूं।

मुझे समझ में आता है कि मैं इस तरह कुछ करने के लिए select का उपयोग कर सकता हूं।

क्या यह सही तरीका है या क्या कोई बेहतर तरीका है जिसे मैं याद कर रहा हूं?

+0

http://stackoverflow.com/questions/6812397/event-loop-implementation-for-python-3 – avasal

+0

आपको अधिक संदर्भ निर्दिष्ट करने की आवश्यकता है। क्या आप सिस्टम प्रोग्रामिंग, सॉकेट प्रोग्रामिंग, असतत घटना सिमुलेशन के बारे में बात कर रहे हैं? –

उत्तर

10

एक इवेंट लूप एक लूप है जो घटनाओं को संभालता/सौदा करता है। ।

एक घटना कुछ है कि प्रणाली जहां कुछ कोड भागों में रुचि हो सकती में होता है

शुरुआत में, सभी घटकों की घटनाओं के लिए रजिस्टर, और उसके बाद, एक init घटना निकाल दिया जाता है:

मैं बस यहाँ कच्चे कोड प्रदान कर रहा हूँ:

listeners = [component1, component2, component3] 
eventqueue.add(InitEvent()) 
while True: 
    event = eventqueue.pop() 
    for listener in listeners: 
     listener.handle_event(event) 

कैसे एक eventqueue कार्यान्वित किया जाता है और क्या Event() वर्ग पदानुक्रम की तरह पाठक के लिए एक व्यायाम के रूप में छोड़ दिया है लग रहा है। .pop() विधि के लिए threading.(R)Lock आदि का उपयोग करने के बारे में परवाह करें।

इसके अतिरिक्त, आपके पास प्रत्येक ईवेंट प्रकार के लिए अलग श्रोता सूची हो सकती है। इस तरह इसे एक घटना (या इसकी .fire() विधि) कहकर "निकाल दिया" जा सकता है और घटना के बारे में सूचित करने के लिए अपने सभी और माता-पिता के श्रोताओं की पहचान करने के लिए एक तंत्र है।

किसी भी मामले में, श्रोताओं तब निर्णय ले सकते हैं कि घटना के अनुसार और क्या करना है।

संबंधित मुद्दे