如果我的代码通过使用多处理变得更快,我想试试。
问题是我的函数将有多个参数,所以我找到的解决方案是创建一个列表列表。这是最快的路吗?有没有比我的while循环更好的方法?
这是我的代码:
def add(a, b, c):
x = a + b + c
print(x)
CPUS = multiprocessing.cpu_count()
WORKERS = multiprocessing.Pool(processes=CPUS)
Tasklist1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
Tasklist2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
Tasklist3 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
a = []
i = 0
while i < len(Tasklist1):
a.append([Tasklist1[i], Tasklist2[i], Tasklist3[i]])
i += 1
WORKERS.starmap(add, a)
我还不是MultiProcessing的用户,但您可以使用zip
来完成此操作。
list1 = [i for i in range(10000)]
list2 = [i for i in range(10000)]
list3 = [i for i in range(10000)]
result = [(i+j+k) for i,j,k in zip(list1,list2,list3)]
%timeit [(i+j+k) for i,j,k in zip(list1,list2,list3)]
1.23 ms ± 85.9 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)