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

В циклах for есть несколько задач, которые можно вызывать и запускать параллельно. Но нам нужно накапливать результат каждой задачи в одной и той же структуре данных.

class Accumulator:
    def __init__(self):
        self.signal = np.zeros((10000,), dtype=float)
        self.count = np.zeros((10000,), dtype=int)

    def on_result(self, result):
        self.signal += result[0]
        self.count += result[1]

if __name__ == '__main__':

    num_proc = multiprocessing.cpu_count()
    pool = multiprocessing.Pool(num_proc)

    accumulator = Accumulator()
    for chrName in chrNames:
        for simNum in sims:
            pool.apply_async(func, (chrName,simNum,), callback=accumulator.on_result)

    pool.close()
    pool.join()

    print(accumulator.signal)
    print(accumulator.count)

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

Apply or map or imap?
sync or async?

Существует ли тестирование производительности / памяти для этих возможностей?

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