Skip to main content

线程,进程,GIL

在python环境下使用多线程部署深度学习服务时一大难以克服的问题就是GIL锁。 有许多解决此问题的尝试。

  • torch::deploy尝试在单进程中运行多个python解释器。
  • Walle为了在端侧使用,重新实现了python 解释器,舍弃了全局解释器锁 GIL,并针对此解释器重新实现了生态中的一些开源库。

线程,进程模式选择

由于GIL锁的影响, 多线程模式python计算后端注定有比较大的缺陷。一个比较简单的方案是:

计算后端模式备注
GPU后端多线程多进程下需要虚拟化,存在共享显存传递的问题
不太涉及GIL锁的CPU后端可多线程-
涉及GIL锁的CPU后端/混合后端多进程/RPC- multiprocessing/Joblib
- 桥接第三方RPC框架
- torch.distributed.rpc
- torch.multiprocessing