事件驱动 python_python事件驱动

举个简单的例子:

有些人喜欢的某个公众号,然后去关注这个公众号,哪天这个公众号发布了篇新的文章,没多久订阅者就会在微信里收到这个公众号推送的新消息,如果感兴趣就打开来阅读。

公众号例子

事件驱动模型可以理解为上面的例子,是设计模式中观察者模式的一种典型应用。除了订阅公众号外,如你关注某人的微博,关注某人的简书,当被关注者发了个新状态或者新文章,你会收到他们新的消息,这些都可以理解为事件驱动模型。

实际上,世间万物各种属性的变化,我们都可以抽象为事件,最直观的是图形界面应用里,如常见的点击、双击、拖动操作,又或者是游戏里的英雄升级了,怪物死亡了等等,都可以视为一个事件发生了。而发送事件的事物称为事件源,对这个事件感兴趣的事物为监听者,事件发生后监听者会收到这个消息,然后做相应的反应。

例如上面公众号例子可以翻译为,监听器(订阅者)监听了(关注了)事件源(公众号),当事件源的发送事件时(公众号发布文章),所有监听该事件的监听器(订阅者)都会接收到消息并作出响应(阅读文章)。

1.公众号为事件源

2.订阅者为事件监听器

3.订阅者关注公众号,相当于监听器监听了事件源

4.公众号发布文章这个动作为发送事件

5.订阅者收到事件后,做出阅读文章的响应动作

第一个公众号发文章的例子 两个py文件

eventengine.py

# encoding: UTF-8

# 系统模块

from queue import Queue, Empty

from threading import *

########################################################################

class EventManager:

# ----------------------------------------------------------------------

def __init__(self):

"""初始化事件管理器"""

# 事件对象列表

self.__eventQueue = Queue()

# 事件管理器开关

self.__active = False

# 事件处理线程

self.__thread = Thread(target=self.__Run)

# 这里的__handlers是一个字典,用来保存对应的事件的响应函数

# 其中每个键对应的值是一个列表,列表中保存了对该事件监听的响应函数,一对多

self.__handlers = {}

# ----------------------------------------------------------------------

def __Run(self):

"""引擎运

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值