最初的问题:使用celery
任务队列,我希望进程池中的进程使用共享的CUDA数组(即,不是每个进程都有其唯一的数组,我想要一个数组可以被所有进程访问。这是安全的,因为仅执行读取操作)。 Pytorch的{{1}}库允许这样做,并且根据doc,它是torch.multiprocessing
的简单替代。
multiprocessing
和billiard
似乎是创建进程池的两个可行选项。目前,由于一些功能上的改进,Python任务队列库multiprocessing
在celery
上使用billiard
。有人问了一个问题here,但是答案并不是很具体。
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.
的源代码中将billiard
替换为multiprocessing
(以便使用pytorch的多处理库celery
),但这可以吗? torch.multiprocessing
和multiprocessing
有什么区别?