环境
Python 3.6.4
简介
Blinker是一个基于Python的强大的信号库,支持一对一、一对多的订阅发布模式,支持发送任意大小的数据等等,且线程安全。
安装
pip install blinker
使用
signal为单例模式
signal 使用了单例模式,允许代码的不同模块得到相同的signal,而不用互相传参。
In [1]: from blinker import signal
In [2]: a = signal('signal_test')
In [3]: b = signal('signal_test')
In [4]: a is b
Out[4]: True
订阅信号
使用.connect(func)方法来订阅一个信号,当信号发布时,该信号的订阅者会执行func。
In [5]: def subscriber(sender):
...: print('Got a signal sent by {}'.format(sender))
...:
In [6]: ready = signal('ready')
In [7]: ready.connect(subscriber)
Out[7]:
发布信号
使用.send()方法来发布信号,会通知所有订阅者,如果没有订阅者则什么都不会发生。
In [12]: class Processor(object):
...:
...: def __init__(sel