真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python模擬事件觸發(fā)機(jī)制詳解-創(chuàng)新互聯(lián)

本文實(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)景需求。


文章標(biāo)題:python模擬事件觸發(fā)機(jī)制詳解-創(chuàng)新互聯(lián)
標(biāo)題URL:http://weahome.cn/article/jeoej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部