multiprocessing多进程计算及与rabbitmq消息通讯实践




import pika
import time
import json
from multiprocessing import Process, Queue
 
# 定义一个多进程任务
def long_running_process(queue):
    # 假设这是一个耗时的计算任务
    result = do_some_long_running_computation()
    queue.put(result)  # 将结果放入进程间通信的队列中
 
# 定义一个计算任务,模拟耗时计算
def do_some_long_running_computation():
    return "任务处理结果"
 
# 定义一个回调函数,用于处理RabbitMQ发送的消息
def callback(ch, method, properties, body):
    # 将接收到的消息转换为字典
    message = json.loads(body)
    # 创建一个进程并传入消息数据
    p = Process(target=long_running_process, args=(Queue(),))
    p.start()
    
    # 处理其他业务逻辑...
    # 假设这里是将计算结果发送回RabbitMQ
    p.join()  # 等待进程完成
    response = p.get()  # 从队列中获取结果
    ch.basic_publish(exchange='',
                     routing_key=method.reply_to,  # 应答队列名称
                     properties=pika.BasicProperties(correlation_id = \
                                                     method.correlation_id),
                     body=json.dumps(response))  # 发送处理结果
    ch.basic_ack(delivery_tag=method.delivery_tag)  # 发送确认消息
 
# 连接到RabbitMQ服务器
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
 
# 定义一个队列用于接收RPC响应
result = Queue()
 
# 定义一个RabbitMQ RPC服务器
channel.basic_consume(callback, queue='rpc_queue')
 
print(" [x] Awaiting RPC requests")
channel.start_consuming()

这个代码实例展示了如何使用multiprocessing库来创建多进程任务,以及如何使用RabbitMQ进行进程间通信和异步任务处理。在long_running_process函数中,我们模拟了一个耗时的计算任务,并将结果通过进程间队列传递给了回调函数。在回调函数中,我们创建了一个新的进程来处理任务,并将结果发送回客户端。这种模式可以有效提高系统的处理能力和响应速度。

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日