您现在的位置是:首页 > 文章详情

pyproc - 无需 CGO 或微服务即可从 Go 调用 Python

日期:2025-09-22点击:3

pyproc 允许你从 Go 调用 Python 函数,就像它们是本地函数一样,使用:

  • 零网络开销 - 使用 Unix 域套接字进行 IPC
  • 进程隔离 - Python 崩溃不会影响你的 Go 服务
  • 真正的并行性- 多个 Python 进程绕过 GIL
  • 简单部署 - 只需 Go 二进制文件 + Python 脚本
  • 连接池 - 重用连接以实现高吞吐量

目标受众和用例

非常适合需要执行以下操作的团队:

  • 将现有的 Python ML 模型(PyTorch、TensorFlow、scikit-learn)集成到 Go 服务中
  • 使用 Go 应用程序中的 Python 库(pandas、numpy)处理数据
  • 处理 1-5k RPS,JSON 有效负载低于 100KB
  • 部署在同一主机/pod上,无需担心网络复杂性
  • 在保留 Python 逻辑的同时,逐步从 Python 微服务迁移到 Go

理想的部署场景:

  • Kubernetes 同 Pod 部署,具有 UDS 共享卷
  • 具有共享套接字卷的 Docker 容器
  • Linux/macOS 上的传统服务器部署

非目标

pyproc不适用于:

  • 跨主机通信- 使用 gRPC/REST API 实现分布式系统
  • Windows UDS 支持- 不支持 Windows 命名管道
  • GPU 管理- 使用专用 ML 服务框架(TensorRT、Triton)
  • 大规模 ML 服务- 考虑使用 Ray Serve、MLflow 或 KServe 进行企业 ML
  • 实时流- 使用 Apache Kafka 或类似产品实现高吞吐量流
  • 数据库操作- 直接使用原生 Go 数据库驱动程序

Compatibility Matrix

Component Requirements
Operating System Linux, macOS (Unix Domain Sockets required)
Go 版本 1.22+
Python 版本 3.9+ (建议 3.12)
Deployment Same host/pod only
Container Runtime Docker, containerd, any OCI-compatible
Orchestration Kubernetes (same-pod), Docker Compose, systemd
Architecture amd64, arm64

特点

  • 无需 CGO - 使用 Unix 域套接字的纯 Go 实现
  • 绕过 Python GIL - 并行运行多个 Python 进程
  • 类似函数的 API - 调用 Python 函数就像pool.Call(ctx, "predict", input, &output)
  • 最小开销- 45μs p50 延迟,8 个 worker 每秒 200,000+ 个请求
  • 生产就绪——健康检查、正常关机、自动重启
  • 易于部署- 单个二进制文件 + Python 脚本,无需服务网格

 

原文链接:https://www.oschina.net/p/pyproc
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章