在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?
是否存在针对这些可能性的运行时/内存基准测试?