当前位置: 首页 > news >正文

multiprocessing多进程使用案例

multiprocessing — 基于进程的并行:https://docs.python.org/zh-cn/3.11/library/multiprocessing.html

import sys
from fastchat.serve.controller import Controller
from fastchat.serve.model_worker import ModelWorker
from fastchat.serve.openai_api_server import app, CORSMiddleware, app_settingsimport sys
import uuid
import uvicorn
from fastapi import FastAPI# 创建不同的 FastAPI 应用实例
controller_app = FastAPI(title="FastChat Controller Service")
worker_app = FastAPI(title="FastChat Model Worker Service")
api_app = FastAPI(title="FastChat OpenAI API Service")def start_controller():"""启动 FastChat Controller 服务分布式系统设计中常见的一种优化策略,决定如何分配任务给不同的model_worker(或服务器)- LOTTERY:这种方法系统会随机选择一个worker。不考虑worker的当前负载或任何其他因素。- SHORTEST_QUEUE:这种方法会选择当前队列长度最短的worker,也就是当前负载最小的工人。"""controller = Controller(dispatch_method="shortest_queue")# sys.modules 是一个字典,它存储了已经加载的模块。每个键是一个模块名,每个值是一个模块对象。# 这种机制使得Python在导入模块时可以检查模块是否已经在sys.modules中,如果是,就直接使用已经加载的模块,避免重复加载。sys.modules["fastchat.serve.controller"].controller = controllercontroller_app.title = "FastChat Controller"controller_app._controller = controlleruvicorn.run(controller_app, host="192.168.110.131", port=21001)def start_model_worker():"""启动 Model Worker 服务"""worker_id = str(uuid.uuid4())[:8]worker = ModelWorker(controller_addr="http://192.168.110.131:21001",worker_addr="http://192.168.110.131:21002",worker_id=worker_id,limit_worker_concurrency=5,no_register=False,# no_register=True,model_path="/home/00_rag/model/ZhipuAI/chatglm3-6b",num_gpus=4,model_names=["chatglm3-6b"],device="cuda",max_gpu_memory="22GiB",)worker_app.title = f"FastChat LLM Server ChaGLM3-6b"worker_app._worker = workeruvicorn.run(worker_app, host="192.168.110.131", port=21002)def start_openai_api_server():"""启动 OpenAI API 服务"""api_app.add_middleware(CORSMiddleware,allow_credentials=True,  # 允许前端请求携带认证信息(如 cookiesallow_origins=["*"],  # 允许所有域名的请求,星号表示不限制任何域。allow_methods=["*"],  # 允许所有的 HTTP 方法。allow_headers=["*"],  # 允许所有的 HTTP 头)app_settings.controller_address = "http://192.168.110.131:21001"app_settings.api_keys = []api_app.title = "FastChat OpenAI API Server"uvicorn.run(api_app, host="192.168.110.131", port=8000)from multiprocessing import Process
import timedef start_services_in_processes():# 创建进程# controller_process = Process(target=start_controller)worker_process = Process(target=start_model_worker)api_server_process = Process(target=start_openai_api_server)# 启动进程# controller_process.start()worker_process.start()api_server_process.start()# 等待所有进程完成# controller_process.join()worker_process.join()api_server_process.join()if __name__ == '__main__':start_services_in_processes()

相关文章:

  • 使用Python,OpenCV,Tesseract-OCR对自己的运动数据图片进行识别及分析,并使用Matplotlib绘制配速图出来
  • 【b站计算机拓荒者】【2025】微信小程序开发教程 - chapter3 项目实践 -1 项目功能描述
  • 机器学习---特征降维
  • 运维Linux之Ansible详解学习(更新中)
  • Python应用运算符初解
  • Word转PDF--自动生成目录
  • 如何在uniapp H5中实现路由守卫
  • 【Vue3】(二)vue3语法详解:自定义泛型、生命周期、Hooks、路由
  • Linux C学习路线全概及知识点笔记1(仅供个人参考)
  • 【2025】基于Springboot + vue + 协同过滤算法实现的旅游推荐系统
  • 基于RK3576+FPGA+CODESYS工控板的运动控制模块方案
  • # 探索自然语言处理的奥秘:基于 Qwen 模型的文本分类与对话系统实现
  • 星际旅行家(广度优先搜索+邻接表)
  • 通俗理解线性与非线性、时变与时不变系统,和数值不稳定性机制
  • 使用Java制作贪吃蛇小游戏
  • PCB文件从 Allegro 24.1 降级保存为 Allegro 17.4版本格式
  • YOLOV8涨点技巧之DSS模块(一种轻量化火灾检测模型)
  • React声明式编程(手动控制,大型项目,深度定制)与Vue响应式系统(自动优化,中小型项目,快速开发)区别
  • 多行字符串文本?各式各样的字符串类型?字符和字符串?
  • GO 语言进阶之 时间处理和Json 处理
  • 网易云播放器做网站播放/网络公司推广方案
  • 电商平台官网/百度seo是啥
  • 网站建设服务哪家有/app推广拉新接单平台
  • 湖州网站设计公司的别名是/下载一个百度时事新闻
  • 重庆电商网站建设/关键词在线听免费
  • 网站建设备案费用/seo教程百度网盘