Python 多处理:台球与多处理
Python Multiprocessing: billiard vs multiprocessing
原问题: 使用 celery
任务队列,我希望进程池中的进程使用共享 CUDA 数组(即不是每个进程都有其唯一的数组,我希望所有进程都访问一个数组。这是安全的,因为只执行读取操作)。 Pytorch 的 torch.multiprocessing
库允许这样做,并且根据 doc,它是 multiprocessing
.
的简单替代品
billiard
和 multiprocessing
似乎是创建进程池的两个可行选项。目前,由于某些 功能改进 ,celery
,python 任务队列库使用 billiard
而不是 multiprocessing
。有人问了一个问题here,但答案并不具体。
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
的人来说,根据这个 [=13] 是不可能的 =] 来自 celery 的开发者
原问题: 使用 celery
任务队列,我希望进程池中的进程使用共享 CUDA 数组(即不是每个进程都有其唯一的数组,我希望所有进程都访问一个数组。这是安全的,因为只执行读取操作)。 Pytorch 的 torch.multiprocessing
库允许这样做,并且根据 doc,它是 multiprocessing
.
billiard
和 multiprocessing
似乎是创建进程池的两个可行选项。目前,由于某些 功能改进 ,celery
,python 任务队列库使用 billiard
而不是 multiprocessing
。有人问了一个问题here,但答案并不具体。
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
的人来说,根据这个 [=13] 是不可能的 =] 来自 celery 的开发者