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

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

基本模型:

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

代码示例

# -*- 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 实现消息发布/订阅模型

            </div>
目录
相关文章
|
数据采集 存储 安全
Pandas数据类型转换:astype与to_numeric
在数据分析中,Pandas的`astype`和`to_numeric`是两种常用的数据类型转换方法。`astype`可将DataFrame或Series中的数据转换为指定类型,支持单一列或多列转换;常见问题包括无效字面量和精度丢失。`to_numeric`主要用于字符串转数值,容错能力强,能自动识别缺失值并优化内存占用。掌握这两种方法及其错误处理技巧,可提高数据分析的效率与准确性。
763 23
|
Python
【Python】解决pandas读取excel,以0向前填充的数字会变成纯数字
本文介绍了两种解决Python使用pandas库读取Excel时,数字前填充的0丢失问题的方法:一是在读取时指定列以字符串格式读取,二是在Excel中预先将数值转换为文本格式。
1019 0
【Python】解决pandas读取excel,以0向前填充的数字会变成纯数字
|
9天前
|
数据采集 人工智能 安全
|
4天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
305 164
|
3天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
318 155

热门文章

最新文章