python многопроцессорность. использовать пул или процесс - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть сценарий, в котором у меня есть oop в основном процессе, который постоянно создает новые объекты. Для каждого созданного объекта необходимо выполнить некоторую обработку, которую я хочу выполнить в отдельном процессе.

Я попытался создать общий словарь, который я постоянно заполняю новыми объектами, и я создал процесс для l oop над объектами в словаре.

есть ли лучший способ сделать это? так как у меня ограниченные ресурсы, и вышеописанный метод довольно медленный.

возможно, лучше создавать отдельного работника каждый раз, когда создается объект? если да, то как мне этого добиться?

спасибо

1 Ответ

0 голосов
/ 09 февраля 2020

Процесс является более "тяжелым" объектом, чем поток. Процесс содержит один или несколько потоков.

Как правило, я бы выбирал процессы поверх потоков только в том случае, если предвидел возможность обработки данных на процессоре, отличном от того, который производит данные (распределенная система). , Если генерация данных и обработка данных (всегда!) Происходят на одном и том же процессоре, то использование потоков более эффективно (общий доступ к данным и примитивы синхронизации для потоков c проще, поскольку операционной системе не нужно учитывать другие существующие процессы).

Количество потоков зависит от аппаратного обеспечения. Вы можете использовать пул потоков для большей гибкости.

Посмотрите на производитель-потребитель , пул потоков , IP C и сопоставьте эти понятия с возможностями языка python ( многопроцессорная обработка , ThreadPoolExecutor ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...