`

python 消息分发组件 blinker 学习

阅读更多

blinker 是一个通过消息机制来实现解耦合库,提供了强大的功能。不过这个来的消息是通过的消息并非异步消息,像实现异步消息的自己修改下。

官网地址:  http://discorporate.us/projects/Blinker/

 

看代码学技术 

 

#!/usr/bin/env python

#coding=utf-8

'''

Created on 2011-9-6

 

@author: bruce

'''

from blinker import signal

from blinker.base import Signal

 

#注册一个命名消息

ready = signal('ready')

 

#创建一个消息订阅者

def subscriber(sender):

#    print sender.name

    print("Got a signal sent by %r" % sender)

 

#消息发送者

class Processor:

    def __init__(self, name):

        self.name = name

        self.id = 'test_001'

 

    def go(self):

        #发送消息

        ready.send(self)

        print("Processing.")

 

    def __repr__(self):

        return '<Processor %s>' % self.name

 

def b_subscriber(sender):

    print("Caught signal from processor_b.")

 

def xxx(sender):

    print 'xxxx'

 

 

processor_b = Processor('b')

ready.connect(subscriber)

ready.connect(b_subscriber, sender=processor_b)

ready.connect(xxx, sender=processor_b)

 

#processor_b.go()

 

 

 

 

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

#注册一个消息

send_data = signal('send-data')

 

#关联消息

@send_data.connect

def receive_data(sender, **kw):

    print("Caught signal from %r, data %r" % (sender, kw))

    return 'received!'

 

#发送消息

result = send_data.send('anonymous', abc=123)

 

 

 

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

#匿名消息

class AltProcessor:

    on_ready = Signal()

    on_complete = Signal()

 

    def __init__(self, name):

        self.name = name

 

    def go(self):

        self.on_ready.send(self)

        print("Alternate processing.")

        self.on_complete.send(self)

 

    def __repr__(self):

        return '<AltProcessor %s>' % self.name

 

apc = AltProcessor('c')

 

@apc.on_complete.connect

def completed(sender):

    print "AltProcessor %s completed!" % sender.name

 

apc.go()

 

 

 

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

dice_roll = signal('dice_roll')

 

@dice_roll.connect_via(1)

@dice_roll.connect_via(3)

@dice_roll.connect_via(5)

def odd_subscriber(sender):

    print("Observed dice roll %r." % sender)

 

result = dice_roll.send(3)

 

分享到:
评论

相关推荐

    Python-blinker一个快速Python进程内信号事件调度系统

    Python的Blinker库是一个强大的进程内信号和事件调度系统,它为Python应用程序提供了一种简单而优雅的方式来处理跨对象和模块的通信。这个库的核心功能是创建和连接信号,这些信号可以像事件一样被触发,允许不同...

    用于硬件 的 Blinker python 库。适用于 Raspberry Pi、Banan Pi、Linux 设备

    在学习和使用Blinker时,这些文档会起到关键作用,帮助开发者快速上手并解决遇到的问题。 "开发语言"标签表明Blinker是用Python编写的,Python是一种高级编程语言,以其简洁明了的语法和丰富的库生态而受到欢迎。...

    Python 强大的信号库:blinker_Python 强大的信号库:blinke

    总结来说,Blinker是一个强大的Python信号库,它提供了一种优雅的方式来解耦和协调应用程序的组件,让代码更加模块化,有助于实现更复杂的设计模式。理解和熟练使用Blinker,能显著提升Python项目的可扩展性和可维护...

    blinker-library-master_ArduinoBlinker库_blinker-library_

    3. **数据接收**:Blinker会通过`BlinkerSerial`对象自动接收云端消息,开发者可以通过`BlinkerReceive`函数处理接收到的数据。例如: ```cpp void BlinkerReceived(String type, String value) { if (type == ...

    Arduino库blinker库.zip

    3. **定时任务与消息推送**:Blinker库支持定时器功能,可以设定周期性的任务执行,比如定时开关某个设备。同时,它也支持消息推送,当硬件状态发生变化时,可以主动将消息推送到手机应用或者其他接收端。 4. **...

    PyPI 官网下载 | blinker-async-0.0.3.tar.gz

    Blinker-Async的目标是在异步编程环境中,如Python的asyncio框架下,保留并扩展了Blinker的灵活性和便利性。 在Python的异步编程中,事件驱动和回调函数是非常常见的方式,而Blinker-Async则提供了基于信号的事件...

    blinker-library-master.zip

    标题"blinker-library-master.zip"表明这是一个关于Blinker库的源码包,"master"通常代表这是该库的主分支或最新版本。描述中提到,解压后将其复制到Arduino IDE的库文件夹,说明这个库是专门为Arduino平台设计的,...

    blinker库文件.rar

    **标题解析:** "blinker库文件.rar" 这个标题表明我们正在处理一个与Blinker相关的库文件,它被封装在一个RAR压缩包里。...对于想要利用Blinker库构建物联网项目的Arduino或ESP8266用户来说,这些都是重要的学习内容。

    python38-32位版本Flask安装所需依赖包

    首先,让我们了解Flask的核心组件。Flask本身是一个微框架,它提供了一个基础架构来构建Web应用,包括路由处理、模板渲染和HTTP请求响应。在Python 3.8 32位系统上安装Flask时,我们需要注意几个关键依赖: 1. **...

    blinker获取天气

    blinker获取天气arduino程序

    blinker:快速的Python进程内信号事件分配系统

    信号灯Blinker提供了一种快速调度系统,该系统允许任意数量的感兴趣的方订阅事件或“信号”。 信号接收方可以订阅特定的发送方,也可以接收任何发送方发送的信号。 它支持分派到连接的协程和接收器函数的任意混合。 ...

    《NodeMCU+Blinker实现智能家居》博客的参考代码

    Blinker提供了一套完整的SDK和API,支持多种编程语言,包括Arduino、Python、JavaScript等。在本例中,我们可能使用的是Arduino库,因为它与NodeMCU的开发环境兼容。通过Blinker,你可以创建设备模型,定义数据点,...

    blinker-doc:blinker中文文档

    提供的"blinker-doc-master"压缩包中包含了Blinker的中文文档,详尽介绍了Blinker平台的使用方法、API接口、示例代码以及故障排除等内容,是学习和开发Blinker项目的宝贵参考资料。 综上所述,Blinker-doc是面向多...

    Blinker_Hello_WiFi.rar

    总的来说,"Blinker_Hello_WiFi"项目为初学者提供了一个实践性的教程,通过它,你可以学习到如何利用ESP8266和Blinker云服务创建一个简单的Wi-Fi连接设备。这不仅是掌握物联网开发技能的好起点,也是进一步探索更...

    ESP8266物联网点灯blinker平台网页配网方案

    开发者可以借助Blinker实现设备的远程控制、数据可视化和消息推送等功能。在这个方案中,Blinker用于接收用户在网页上输入的Wi-Fi配置信息,并将其发送给ESP8266。 5. **网页配网**:用户通过设备创建的热点连接到...

    基于NODE MCU 的 , Blinker 远程控制小车的代码

    在本项目中,我们主要探讨如何使用NodeMCU(一种基于ESP8266的微控制器)配合Blinker平台实现远程控制小车。...这不仅是一个有趣的物联网应用示例,也是学习嵌入式系统、物联网技术以及无线通信的好实践。

    Blinker支持库

    4. **数据接收**:使用`Blinker.available()`检查是否有新消息,然后通过`Blinker收到()`或`Blinker.getString()`等方法读取云端发送的数据。 5. **事件处理**:Blinker库还支持事件驱动编程,可以通过`Blinker.on...

    blinker-py:用于硬件的Blinker python库。 与Raspberry Pi,Banan Pi,Linux设备一起使用

    **Blinker-Py:为硬件交互打造的Python库** Blinker-Py是一个专为硬件控制设计的Python库,特别适用于与Raspberry Pi、Banana Pi以及各种Linux设备进行集成。它提供了一套简单易用的API,使得开发者能够轻松地在...

Global site tag (gtag.js) - Google Analytics