Python 如何在for循环中使用多处理

Python 如何在for循环中使用多处理,python,multithreading,multiprocessing,Python,Multithreading,Multiprocessing,我不熟悉Python多处理。我有一个返回值的函数,应该并行运行。在下面,您可以找到一个示例代码 import multiprocessing as mp from tqdm import tqdm def foo(self): arg_triplets = [(self.loc_x[ii], self.loc_y[jj], self.arg) for ii in np.arange(0, self.nx) for jj in np.arange

我不熟悉Python
多处理
。我有一个返回值的函数,应该并行运行。在下面,您可以找到一个示例代码

import multiprocessing as mp
from tqdm import tqdm

def foo(self):
    arg_triplets = [(self.loc_x[ii], self.loc_y[jj], self.arg) 
                    for ii in np.arange(0, self.nx) for jj in np.arange(0, self.ny)]
    ctx = mp.get_context('fork')
    max_proc = mp.cpu_count()-1
    pool = ctx.Pool(processes=max_proc)
    return_values = list(tqdm(pool.imap(target_foo, arg_triplets), total=nx*ny))
    pool.close()
    pool.join()

所以,当我运行这个例程一次时,一切正常。函数
target\u foo
接受三个参数,并以列表形式返回所有输出值。我可以监视我的8核处理器的状态,看到其中7个处理器同时工作。但当我在
for
循环中使用函数
foo
时,问题就开始了。例如,我需要为多个
foo
收集数据,而我不需要并行收集这些数据。因此,我为循环创建了一个
,它按顺序调用
foo
。在
foo
的每次调用中,函数
target\u foo
应该并行工作。问题是它第一次并行工作,但第二次就不行了。我做错了什么?

显然我不明白问题到底是什么。显然我不明白问题到底是什么。