Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否可以创建一个池来并行化已经作为池的循环?_Python_Multiprocessing - Fatal编程技术网

Python 是否可以创建一个池来并行化已经作为池的循环?

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() 其中,函数是任何函数,参数是函

我的问题是假设你有一个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

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我们不是粗鲁无礼,我们是尽可能地为你们服务,这就是为什么我们要问这个问题。我们刚刚看到了一个更普遍的解决方案;)