原始问题:使用celery
任务队列,我希望进程池中的进程使用共享的 CUDA 数组(即,我希望所有进程访问一个数组,而不是每个进程都有其唯一的数组。这是安全的,因为只执行读取)。Pytorch 的torch.multiprocessing
库允许这样做,根据文档,它是multiprocessing
的简单替代品。
billiard
和multiprocessing
似乎是创建进程池的两个可行选项。目前,由于一些功能改进,python任务队列库celery
使用billiard
超过multiprocessing
。有人在这里问了一个问题,但答案并不具体。
It backports changes from the Python 2.7 and 3.x.
The current version is compatible with Py2.4 - 2.7 and falls back to multiprocessing for 3.x,
the next version will only support 2.6, 2.7 and 3.x.
我需要在celery
的源代码中用multiprocessing
替换billiard
(为了使用pytorch的多处理库torch.multiprocessing
),但这可以吗?multiprocessing
和billiard
有什么区别?
对于那些希望用multiprocessing
替换celery
的billiard
的人来说,根据芹菜开发者的回复,这是不可能的