Исходная проблема: с использованием celery
очереди задач. Я хочу, чтобы процессы в пуле процессов использовали общие массивы CUDA (т. Е. Вместо каждого процесса, имеющего свой уникальный массив, я хочу получить доступ к одному массивувсеми процессами. Это безопасно, потому что выполняются только чтения).Библиотека Pytorch torch.multiprocessing
позволяет это делать, и, согласно doc , это простая замена для multiprocessing
.
billiard
и multiprocessing
, которые кажутся жизнеспособными.варианты создания пулов процессов.В настоящее время celery
, библиотека очереди задач Python, использует 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.
Мне нужно заменить billiard
на multiprocessing
в исходном коде celery
(вЧтобы использовать многопроцессорную библиотеку Pytorch torch.multiprocessing
), но это будет хорошо?В чем различия между multiprocessing
и billiard
?