理论上讲,两个办法:
一、多线程,但不知道怎么全局解释锁被优化得怎么样
二、多进程,消耗更多内存,因为需要加载模型,内存复制必须要考虑。多进程管理是个麻烦,启动耗时也得考虑

期望有个轻量级的开源程序,轻松完成这个活……
最新回复 (9)
  • changz4月前
    引用2
    多线程+c/c++ ffi
  • gaogang4月前
    引用3
    cpu 密集的任务 用其他合适的语言实现
    然后通过 rpc 暴露出来 正好给 python 的 asyncio 调
  • lambdaq4月前
    引用4
    asyncio 顾名思义是 异步 io 。。。众所周知,py 要么卡 cpu 要么卡 io ,asyncio 只解决卡 io 的问题啊。
  • ysn22334月前
    引用6
    用 c/c++/rust 的 ffi 做 binding 吧,实在不行 java/go 什么的也行,python 就做个前端调一下
  • mirrornighth4月前
    引用7
    多进程
  • ipwx4月前
    引用8
    “因为需要加载模型,内存复制必须要考虑。”

    你是啥模型。有些模型开多线程是可以并行的。
  • Goooooos4月前
    引用9
    python 3.13 可以加个参数去掉 GIL
  • guochao4月前
    引用10
    针对锁和 python 效率的问题:
    - 如果你的计算任务可以用 c/rust 的模块,最好是在 c/rust 的部分处理,最好能批处理
    - 如果是 pure python ,也许可以试试 taichi 或者类似的东西。因为 python 可以被再次编译成 native 或者 gpu kernel ,并针对架构优化
    针对 asyncio 只管异步切换,计算存在长时间阻塞的问题
    - (不同进程、单独服务的方案)要么 celery ,或者自己搓一个简单的队列
    - (简单在同一个进程中的方案)要么 thread pool executor
  • 回复请 登录 or 快速注册
返回