Очередь задач общей памяти Python в кластере или отправка экземпляров классов через кластер
У меня есть параллельная программа на Python и доступ к кластеру. Я считаю, что подход, который мы хотим, состоит в том, чтобы все узлы имели доступ к некоторой общей памяти и генерировали очередь независимых задач, но я не могу найти библиотеку Python, которая включает общую память в кластере. Возможна ли совместная память в кластере?
В частности, manager
класс создает N
случаи worker
учебный класс. каждый worker
обновляется независимо от всех остальных, и затем рабочие сравниваются на основе результатов обновлений друг друга. В базе данных хранится подробная информация о работниках. manager
учебный класс. Эффективно:
class worker():
def update():
# do update
# Update manager.database here?
class manager():
def __init__(num_workers):
self.worker_list = []
for i in range(num_workers):
new_worker = worker()
# Add worker to self.database
self.worker_list.append(new_worker)
def update_workers():
new_worker.update()
# Update database here?
def compare_workers():
for worker1 in self.worker_list:
for worker2 in self.worker_list:
if worker1 != worker2:
compare_workers(worker1, worker2)
# Update self.database
if __name__=='__main__':
Manager = manager(num_workers=3)
Manager.update_workers()
Manager.compare_workers()
worker
классы довольно большие. Я думаю, что было бы лучше, если бы каждый узел мог получить доступ к manager.database
: тогда данный узел может получить worker
выполните обновление, измените базу данных, чтобы отразить обновление, и перейдите к следующей задаче. Затем мы можем построить очередь задач:
- Обновить
worker id=1
- Обновить
worker id=2
- Обновить
worker id=3
- сравнить
worker id=1
,worker id=2
- сравнить
worker id=1
,worker id=3
- сравнить
worker id=2
,worker id=3
Альтернативно, это может работать, чтобы распределить память, то есть отправить worker
экземпляры по сети, выполнять обновления и возвращать весь обновленный экземпляр. Я не могу найти пакет, который поддерживает отправку экземпляров всего класса таким образом, возможно ли это?
Спасибо за любой совет.