原始问题: 使用
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
的源代码中将billiard
替换为multiprocessing
(以便使用pytorch的多进程库torch.multiprocessing
),但这样做有什么问题吗?multiprocessing
和billiard
之间有什么区别?
billiard
和multiprocessing
有很大的区别。我建议您按照@KlausD.的建议描述您的原始问题。 - Alex Yu