【问题标题】:Does the Process and Pool classes share the same workers?Process 和 Pool 类是否共享相同的工人?
【发布时间】:2012-09-13 02:21:12
【问题描述】:

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

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

worker = Process(target=grab_worker)

worker.start() 

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

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

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

同样,其中的底层代码应该与我认为的问题无关,所以还不包括代码。

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

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

或者,相反,它是否通过允许每个类实例仅引用它产生的工人来保持“热端热和冷端冷”(Process 重用其先前创建的一个工人,Pool继续使用其指定的工人与Process 使用由Pool 生成的工人)。

【问题讨论】:

    标签: python process multiprocess


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-21
      • 2011-03-03
      • 2012-08-17
      • 2017-11-25
      • 2011-08-24
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      相关资源
      最近更新 更多