使用哪种多处理池方法?

时间:2019-10-17 23:20:42

标签: python multiprocessing

在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?

是否存在针对这些可能性的运行时/内存基准测试?

0 个答案:

没有答案