我正在使用一个需要很长时间来计算每个列表元素的函数创建一个列表列表。由于这减慢了我的整个过程,我试图通过使用multiprocessing
python 中的库来使其运行得更快。
但是,当我尝试使用多处理器时,它会使我的代码运行得更慢。知道为什么会这样吗?
import multiprocessing
import time
# arbitrary F function for a reproducible example
# The actual function is more complicated
def f(a, b):
for i in range(100000):
a = True
return [a * b, a + b]
if __name__ == '__main__':
G = [1, 2]
l = [t for t in range(6000)]
t1 = time.time()
my_list1 = [[f(l[x], G[i])[0] for i in range(len(G))] for x in range(len(l))]
t2 = time.time()
print("Original: ", t2 - t1)
pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
t3 = time.time()
my_list2 = [[pool.apply(f, args=(l[x], G[i]))[0] for i in range(len(G))] for x in range(len(l))]
t4 = time.time()
pool.close()
print("Parallelized: ", t4 - t3)
示例输出:
Original: 29.832287073135376
Parallelized: 33.75640296936035
任何关于我如何并行创建此列表的注释都值得赞赏。