Очередь задач общей памяти 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выполните обновление, измените базу данных, чтобы отразить обновление, и перейдите к следующей задаче. Затем мы можем построить очередь задач:

  1. Обновить worker id=1
  2. Обновить worker id=2
  3. Обновить worker id=3
  4. сравнить worker id=1, worker id=2
  5. сравнить worker id=1, worker id=3
  6. сравнить worker id=2, worker id=3

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

Спасибо за любой совет.

0 ответов

Другие вопросы по тегам