Process和Pool类是否共享相同的工作者?

时间:2012-09-20 16:59:01

标签: python process multiprocess

我有一个python脚本正在做一些map reduce-ish ETL。我不是代码的创始人,而是在分析/诊断运行时进行一些改进。

在包中,它使用“Process”:

worker = Process(target=grab_worker)

worker.start() 

这是一个从我们的CDN中提取新文件的perpectual FTP循环,不能包含FTP代码但不应与问题相关

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

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

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

我的问题是,在Python中,一旦我创建了工作人员Pool,那里的工作人员将与Process“共享”吗?

换句话说,如果我首先使用进程执行某些操作创建1个worker,稍后在我使用池类创建worker时执行,当循环返回并尝试运行向进程注册的函数时,它是否会使用以前创建的工人?

或者,通过允许每个类实例仅引用它已生成的工作者(Process重用其先前创建的一个工作程序,并保持“热端冷和冷端冷”) {1}}使用Pool生成的工作人员继续使用其指定的工作人员与Process

1 个答案:

答案 0 :(得分:1)

mp.Processmp.Pool一无所知。 因此,对mp.Process的调用不会以某种方式使用mp.Pool生成的进程。