本文實(shí)例為大家分享了python模擬事件觸發(fā)機(jī)制的具體代碼,供大家參考,具體內(nèi)容如下
創(chuàng)新互聯(lián)公司專注于云夢(mèng)企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城網(wǎng)站定制開發(fā)。云夢(mèng)網(wǎng)站建設(shè)公司,為云夢(mèng)等地區(qū)提供建站服務(wù)。全流程按需策劃,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)EventManager.py
# -*- encoding: UTF-8 -*- # 系統(tǒng)模塊 from queue import Queue, Empty from threading import * class EventManager: def __init__(self): """初始化事件管理器""" # 事件對(duì)象列表 self.__eventQueue = Queue() # 事件管理器開關(guān) self.__active = False # 事件處理線程 self.__thread = Thread(target = self.__Run) # 這里的__handlers是一個(gè)字典,用來保存對(duì)應(yīng)的事件的響應(yīng)函數(shù) # 其中每個(gè)鍵對(duì)應(yīng)的值是一個(gè)列表,列表中保存了對(duì)該事件監(jiān)聽的響應(yīng)函數(shù),一對(duì)多 self.__handlers = {} # {事件類型:[處理事件的方法]} def __Run(self): """引擎運(yùn)行""" while self.__active == True: try: # 獲取事件的阻塞時(shí)間設(shè)為1秒 event = self.__eventQueue.get(block = True, timeout = 1) self.__EventProcess(event) except Empty: pass def __EventProcess(self, event): """處理事件""" # 檢查是否存在對(duì)該事件進(jìn)行監(jiān)聽的處理函數(shù) if event.type_ in self.__handlers: # 若存在,則按順序?qū)⑹录鬟f給處理函數(shù)執(zhí)行 for handler in self.__handlers[event.type_]: handler(event) def Start(self): """啟動(dòng)""" # 將事件管理器設(shè)為啟動(dòng) self.__active = True # 啟動(dòng)事件處理線程 self.__thread.start() def Stop(self): """停止""" # 將事件管理器設(shè)為停止 self.__active = False # 等待事件處理線程退出 self.__thread.join() def AddEventListener(self, type_, handler): """綁定事件和監(jiān)聽器處理函數(shù)""" # 嘗試獲取該事件類型對(duì)應(yīng)的處理函數(shù)列表,若無則創(chuàng)建 try: handlerList = self.__handlers[type_] except KeyError: handlerList = [] self.__handlers[type_] = handlerList # 若要注冊(cè)的處理器不在該事件的處理器列表中,則注冊(cè)該事件 if handler not in handlerList: handlerList.append(handler) def RemoveEventListener(self, type_, handler): """移除監(jiān)聽器的處理函數(shù)""" #讀者自己試著實(shí)現(xiàn) def SendEvent(self, event): """發(fā)送事件,向事件隊(duì)列中存入事件""" self.__eventQueue.put(event) """事件對(duì)象""" class Event: def __init__(self, type_=None): self.type_ = type_ # 事件類型 self.dict = {} # 字典用于保存具體的事件數(shù)據(jù)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。