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应用程序提供了一种简单而优雅的方式来处理跨对象和模块的通信。这个库的核心功能是创建和连接信号,这些信号可以像事件一样被触发,允许不同...
在学习和使用Blinker时,这些文档会起到关键作用,帮助开发者快速上手并解决遇到的问题。 "开发语言"标签表明Blinker是用Python编写的,Python是一种高级编程语言,以其简洁明了的语法和丰富的库生态而受到欢迎。...
总结来说,Blinker是一个强大的Python信号库,它提供了一种优雅的方式来解耦和协调应用程序的组件,让代码更加模块化,有助于实现更复杂的设计模式。理解和熟练使用Blinker,能显著提升Python项目的可扩展性和可维护...
3. **数据接收**:Blinker会通过`BlinkerSerial`对象自动接收云端消息,开发者可以通过`BlinkerReceive`函数处理接收到的数据。例如: ```cpp void BlinkerReceived(String type, String value) { if (type == ...
3. **定时任务与消息推送**:Blinker库支持定时器功能,可以设定周期性的任务执行,比如定时开关某个设备。同时,它也支持消息推送,当硬件状态发生变化时,可以主动将消息推送到手机应用或者其他接收端。 4. **...
Blinker-Async的目标是在异步编程环境中,如Python的asyncio框架下,保留并扩展了Blinker的灵活性和便利性。 在Python的异步编程中,事件驱动和回调函数是非常常见的方式,而Blinker-Async则提供了基于信号的事件...
标题"blinker-library-master.zip"表明这是一个关于Blinker库的源码包,"master"通常代表这是该库的主分支或最新版本。描述中提到,解压后将其复制到Arduino IDE的库文件夹,说明这个库是专门为Arduino平台设计的,...
**标题解析:** "blinker库文件.rar" 这个标题表明我们正在处理一个与Blinker相关的库文件,它被封装在一个RAR压缩包里。...对于想要利用Blinker库构建物联网项目的Arduino或ESP8266用户来说,这些都是重要的学习内容。
首先,让我们了解Flask的核心组件。Flask本身是一个微框架,它提供了一个基础架构来构建Web应用,包括路由处理、模板渲染和HTTP请求响应。在Python 3.8 32位系统上安装Flask时,我们需要注意几个关键依赖: 1. **...
blinker获取天气arduino程序
信号灯Blinker提供了一种快速调度系统,该系统允许任意数量的感兴趣的方订阅事件或“信号”。 信号接收方可以订阅特定的发送方,也可以接收任何发送方发送的信号。 它支持分派到连接的协程和接收器函数的任意混合。 ...
Blinker提供了一套完整的SDK和API,支持多种编程语言,包括Arduino、Python、JavaScript等。在本例中,我们可能使用的是Arduino库,因为它与NodeMCU的开发环境兼容。通过Blinker,你可以创建设备模型,定义数据点,...
提供的"blinker-doc-master"压缩包中包含了Blinker的中文文档,详尽介绍了Blinker平台的使用方法、API接口、示例代码以及故障排除等内容,是学习和开发Blinker项目的宝贵参考资料。 综上所述,Blinker-doc是面向多...
总的来说,"Blinker_Hello_WiFi"项目为初学者提供了一个实践性的教程,通过它,你可以学习到如何利用ESP8266和Blinker云服务创建一个简单的Wi-Fi连接设备。这不仅是掌握物联网开发技能的好起点,也是进一步探索更...
开发者可以借助Blinker实现设备的远程控制、数据可视化和消息推送等功能。在这个方案中,Blinker用于接收用户在网页上输入的Wi-Fi配置信息,并将其发送给ESP8266。 5. **网页配网**:用户通过设备创建的热点连接到...
在本项目中,我们主要探讨如何使用NodeMCU(一种基于ESP8266的微控制器)配合Blinker平台实现远程控制小车。...这不仅是一个有趣的物联网应用示例,也是学习嵌入式系统、物联网技术以及无线通信的好实践。
4. **数据接收**:使用`Blinker.available()`检查是否有新消息,然后通过`Blinker收到()`或`Blinker.getString()`等方法读取云端发送的数据。 5. **事件处理**:Blinker库还支持事件驱动编程,可以通过`Blinker.on...
**Blinker-Py:为硬件交互打造的Python库** Blinker-Py是一个专为硬件控制设计的Python库,特别适用于与Raspberry Pi、Banana Pi以及各种Linux设备进行集成。它提供了一套简单易用的API,使得开发者能够轻松地在...