Как выбрать размер фрагмента для многопроцессорной обработки Python с большими наборами данных - PullRequest
5 голосов
/ 25 апреля 2010

Я пытаюсь использовать python для повышения производительности задачи, которая может быть сильно распараллелена с помощью http://docs.python.org/library/multiprocessing.

Когда они смотрят на свою библиотеку, они говорят, что используют размер чанка для очень длинных итераций. Теперь моя итерация не длинная, один из диктовок, который он содержит, огромен: ~ 100000 записей с кортежами в качестве ключей и массивами для значений.

Как мне установить размер фрагмента, чтобы справиться с этим, и как я могу быстро передать эти данные?

Спасибо.

1 Ответ

3 голосов
/ 25 апреля 2010

Единственный способ обработать этот большой элемент сразу несколькими рабочими - это разделить его. multiprocessing работает путем разделения работы на единицы, но наименьшая единица, которую вы можете кормить, это один объект - он не может знать, как разделить один объект разумным способом. Вы должны сделать это самостоятельно, вместо этого. Вместо того, чтобы посылать надписи, над которыми нужно работать, разделите их на более мелкие рабочие единицы и отправьте их. Если вы не можете разделить текст, потому что все данные взаимозависимы, вы не сможете разделить работу.

...