多处理似乎不起作用



我做了一个简单的多处理代码,但我认为它不起作用。

当我在笔记本电脑上尝试此代码时,我通过活动监视器应用程序检查了处理器,它显示某些处理器可以正常工作。因此,使用此代码,我在工作站上运行它(Core 最多 28 个,使用 24 个(,并通过任务管理器再次检查它。但是,CPU 使用率并没有增加,只是处理器增加了。

# Multiprocessing
def multi(input_field):
    result = subvolume.label(input_field)
    return result
test_list = [resampled_sub_1, resampled_sub_2, resampled_sub_3,
             resampled_sub_4, resampled_sub_5]
if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=24)
    results = pool.map(multi, test_list)
    pool.close()
    pool.join()

当多处理正确完成时,我认为 CPU 使用率比这增加。我哪里做错了什么?

中有 24 个进程,但可迭代test_list中只有 5 个项目。当你从我的回答中选择calc_chunksize_info()时,你可以计算生成和分布的块:

calc_chunksize_info(n_workers=24, len_iterable=5)
# Out: Chunkinfo(n_workers=24, len_iterable=5, n_chunks=5, chunksize=1, last_chunk=1)

块大小将被1,因此最多可以并行运行五个工作进程。您的输入可迭代中根本没有足够的项来使用所有工作进程。

作为旁注:test_list应在 if __name__ == '__main__': 块中定义。

相关内容

  • 没有找到相关文章

最新更新