在executor.mapcurrent.futures中创建流程

时间:2019-09-30 11:53:33

标签: python process multiprocessing

我正在使用concurrent.futures模块将以下代码用于多处理

with concurrent.futures.ProcessPoolExecutor(max_workers=4) as executor:
    var = executor.map(process, pdf_pages)

现在,我正在并行创建4个进程,如果我的可迭代pdf_pages具有4个页面和chunk_size = 1(default value),那么据我所知,每个页面将在单独的4个内核上处理(我的电脑只有4个内核)就是这样。

发生的事情是某些过程在较短的时间内完成,并且我想知道对于迭代器pdf_pages是否具有8个值,下一个值是否由executor.map立即启动,或者发生在cpu cores的前四个值先完成之后,即在第一批4完成后,队列中的下一个要执行的前四个值。

此外,我想了解以下原因:

  

ProcessPoolExecutor,此方法将可迭代项分为多个   它作为单独的任务提交给池的块。的   这些块的(大约)大小可以通过设置   块大小为正整数。对于很长的可迭代项,请使用   块大小的较大值可以显着提高性能   与默认大小1相比。使用ThreadPoolExecutor,chunksize   没有效果。

来自python文档。

此外,我该如何加快处理速度。

0 个答案:

没有答案