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

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业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。