Python编程:实现消息发布/订阅模型

简介: Python编程:实现消息发布/订阅模型

基本模型:

发布者 -> 交换机 <-> 订阅者
• 1

代码示例

# -*- coding: utf-8 -*-
# 消息发布/订阅模型
from collections import defaultdict
from contextlib import contextmanager
class Exchange(object):
    def __init__(self):
        self._subscribers = set()
    def attach(self, task):
        self._subscribers.add(task)
    def detach(self, task):
        self._subscribers.remove(task)
    def send(self, message):
        for subscriber in self._subscribers:
            subscriber.send(message)
    @contextmanager
    def subscribe(self, *tasks):
        for task in tasks:
            self.attach(task)
        try:
            yield
        finally:
            for task in tasks:
                self.detach(task)
_exchanges = defaultdict(Exchange)
def get_exchange(name):
    return _exchanges[name]
class Task(object):
    def send(self, message):
        """发送消息的方法"""
        print(message)
task1 = Task()
task2 = Task()
# 1、手动 添加注册,取消注册
exchage = get_exchange("message")
exchage.attach(task1)
exchage.attach(task2)
exchage = get_exchange("message")
exchage.send("你好")
# 你好
# 你好
exchage.detach(task1)
exchage.detach(task2)
# 2、使用上下文管理器
exchage = get_exchange("message")
with exchage.subscribe(task1, task2):
    exchage.send("你好啊")
    # 你好啊
    # 你好啊

参考

12.11 实现消息发布/订阅模型

相关文章
|
2月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
|
21天前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
191 102
|
21天前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
194 104
|
21天前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
185 103
|
21天前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
130 82
|
20天前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
199 2
|
21天前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的多面手
Python:现代编程的多面手
32 0
|
1月前
|
存储 人工智能 算法
Python实现简易成语接龙小游戏:从零开始的趣味编程实践
本项目将中国传统文化与编程思维相结合,通过Python实现成语接龙游戏,涵盖数据结构、算法设计与简单AI逻辑,帮助学习者在趣味实践中掌握编程技能。
112 0
|
1月前
|
算法 安全 新能源
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
|
2月前
|
机器学习/深度学习 算法 调度
【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)
【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)

推荐镜像

更多