我正在使用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文档。
此外,我该如何加快处理速度。