Как многопроцессорный модуль обеспечивает удаленный параллелизм? - PullRequest
0 голосов
/ 17 мая 2019

Я понимаю, что в модуль concurrent.futures , ProcessPoolExecutor подкласс использует многопроцессорность *Модуль 1012 * для порождения нескольких процессов.

Возможно ли достичь этого параллелизма на удаленной машине?Если да, как память распределяется или распределяется между различными процессами?

Каковы другие проблемы достижения этой многопроцессорности на удаленной машине?

Я пробовал локальный параллелизм, используя этот метод.Я просто хочу знать, может ли удаленный параллелизм помочь мне достичь еще большей производительности.

1 Ответ

2 голосов
/ 17 мая 2019

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

В промышленности такие инструменты, как (Py) Spark и (Py) Mesos, более популярны для этой задачи.

Вы можете использовать multiprocessing, вот пример из официальной документации :

Выполнение следующих команд создает сервер для единой общей очереди, которую удаленные клиенты могутaccess:

>>> from multiprocessing.managers import BaseManager
>>> from queue import Queue
>>> queue = Queue()
>>> class QueueManager(BaseManager): pass
>>> QueueManager.register('get_queue', callable=lambda:queue)
>>> m = QueueManager(address=('', 50000), authkey=b'abracadabra')
>>> s = m.get_server()
>>> s.serve_forever()

Один клиент может получить доступ к серверу следующим образом:

>>> from multiprocessing.managers import BaseManager
>>> class QueueManager(BaseManager): pass
>>> QueueManager.register('get_queue')
>>> m = QueueManager(address=('foo.bar.org', 50000), authkey=b'abracadabra')
>>> m.connect()
>>> queue = m.get_queue()
>>> queue.put('hello')

Другой клиент также может использовать его:

>>> from multiprocessing.managers import BaseManager
>>> class QueueManager(BaseManager): pass
>>> QueueManager.register('get_queue')
>>> m = QueueManager(address=('foo.bar.org', 50000), authkey=b'abracadabra')
>>> m.connect()
>>> queue = m.get_queue()
>>> queue.get()
'hello'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...