多处理池比单处理花费更多的时间

时间:2019-07-23 15:39:34

标签: python multiprocessing pool

我正在尝试以下代码来了解Python中的多处理模块。我不确定为什么多处理部分比串行处理花费更多的时间

import numpy as np
import multiprocessing
from itertools import product
import timeit

def sum_diff(a,b):
    return a+b,a-b


a = np.linspace(1,11,100000)
b = np.linspace(11,21,100000)
sum = np.zeros_like(a)
diff = np.zeros_like(a)
nprocs = 4

pool = multiprocessing.Pool(nprocs)
start = timeit.default_timer()
result = pool.starmap(sum_diff,zip(a,b))
end = timeit.default_timer()
print('time pool',start - end)
#print(result)
print()
start = timeit.default_timer()
for i in range(len(a)):
    sum[i],diff[i] = sum_diff(a[i],b[i])
end = timeit.default_timer()
print('time sp',start - end)
# print(sum)
# print(diff)


time pool -2.431158052000683

time sp -0.30316245200810954

0 个答案:

没有答案