我一直使用Python的多处理模块对一些代码进行概要分析('作业'函数只是对数字进行平方)。
data = range(100000000)
n=4
time1 = time.time()
processes = multiprocessing.Pool(processes=n)
results_list = processes.map(func=job, iterable=data, chunksize=10000)
processes.close()
time2 = time.time()
print(time2-time1)
print(results_list[0:10])
我发现奇怪的一件事是最佳的chunksize似乎是大约10k元素 - 这在我的计算机上耗时16秒。如果我将chunksize增加到100k或200k,那么它会减慢到20秒。
这种差异可能是由于长时间列表中酸洗所需的时间更长吗? 100个元素的块大小需要62秒,我假设是由于在不同进程之间来回传递块所需的额外时间。
答案 0 :(得分:10)
关于最佳chunksize:
由于这两条规则都需要不同的方法,因此中间的一点是可行的方法,类似于供需图表。