Можно ли использовать SCOOP внутри метода класса? - PullRequest
0 голосов
/ 11 декабря 2018

В настоящее время я учусь использовать SCOOP для распределения карты по нескольким узлам в кластере.Я использую метод внутри класса, который я использовал ранее для отображения задач на узле sinlge с использованием стандартной многопроцессорной обработки, методов пула, т.е. из пула импорта многопроцессорной обработки, current_process

class ExampleClass():
    def __init__(self, list_of_genomes):
        self.list_of_genomes = list_of_genomes

    def distance_function(self, genome1, genome2):
        # perform some kind of distance calculation and return the result
        return distance

    def createDistanceMatrix(self, child_process_chunksize, number_of_cores): 
        distance_matrix = []
        for genome in tqdm(self.list_of_genomes):
            with Pool(processes = number_of_cores) as pool:
                fut = pool.starmap_async(self.distance_function, zip([genome] * len(self.list_of_genomes), self.list_of_genomes), chunksize = child_process_chunksize)
                fut.wait()
                distance_matrix.append(fut.get())

        return distance_matrix

Однако, если я правильно понимаю SCOOP, тогдаmap должно быть в пределах if __name__ == "__main__":.Означает ли это, что вы не можете использовать SCOOP внутри метода класса?Если да, то есть ли другой способ использования нескольких узлов из метода класса?

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