Python 是否可以创建一个池来并行化已经作为池的循环?
我的问题是假设你有一个for循环,在这个循环中你创建了一个池。例如:Python 是否可以创建一个池来并行化已经作为池的循环?,python,multiprocessing,Python,Multiprocessing,我的问题是假设你有一个for循环,在这个循环中你创建了一个池。例如: import multiprocessing as mp cpus = mp.cpu_count()-1 for i in A: pool = mp.Pool(cpus) sma = pool.startmap_async(function, parameters) result = sma.get() pool.close() pool.join() 其中,函数是任何函数,参数是函
import multiprocessing as mp
cpus = mp.cpu_count()-1
for i in A:
pool = mp.Pool(cpus)
sma = pool.startmap_async(function, parameters)
result = sma.get()
pool.close()
pool.join()
其中,函数
是任何函数,参数
是函数的参数。为了并行化,我可以将循环中的内容放在函数中并创建一个池,在其中调用新函数吗?就像:
import multiprocessing as mp
def function1():
## put what is inside the loop
return result
if __name__ == '__main__':
pool2 = Pool()
pool2.map(function1, new_parameters)
是的,那是可能的。你可以尽可能短地试一下
def f(x):
return list(Pool(10).map(sleep, [60] * 1000))
print(list(Pool(15).map(f, range(1000))))
您将在top
中看到151个进程
一个真正有价值的知识(没有讽刺意味,谢谢你提出这个问题)是,这些问题都是通过实验来回答的。好吧,你试过了吗?不,我想知道这是否可能,因为我对游泳池知之甚少。这就是为什么这是一个假设的例子。没必要粗鲁,你应该能做到that@DPM我们不是粗鲁无礼,我们是尽可能地为你们服务,这就是为什么我们要问这个问题。我们刚刚看到了一个更普遍的解决方案;)