2

我有一个 python 脚本正在执行一些 map reduce-ish ETL。我不是代码的发起者,而是致力于分析/诊断其运行时以进行一些改进。

在包中,它使用了一个“进程”:

worker = Process(target=grab_worker)

worker.start() 

从我们的 CDN 中提取新文件的永久 FTP 循环,不能包含 FTP 代码,但不应该与问题相关

在后面的代码中,我们创建了一个Pool运行一些异步函数的 worker 实例:

workerpool =  multiprocessing.Pool(processes=4)
# ...
resultobjs[k] = workerpool.apply_async(func, args=fargs)

同样,其中的基础代码应该与我认为不包括代码的问题无关。

我的问题是,在 Python 中,一旦我创建了工人Pool,那里的工人会与Process?

换句话说,如果我首先创建 1 个带有进程执行某事的工作人员,然后在执行时创建具有池类的工作人员,当循环返回并尝试运行向该过程注册的函数时,它会使用先前创建的工作人员吗?

或者,相反,它是否通过允许每个类实例仅引用它产生的工人(Process重用其先前创建的一个工人,并Pool继续使用其指定的工人与Process使用产生的工人Pool)。

4

1 回答 1

1

对此mp.Process一无所知mp.Pool。所以调用mp.Process不会以某种方式使用由mp.Pool.

于 2012-09-20T17:34:00.907 回答