我有一个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
。
答案 0 :(得分:1)
mp.Process
对mp.Pool
一无所知。
因此,对mp.Process
的调用不会以某种方式使用mp.Pool
生成的进程。