多处理似乎不起作用

时间:2019-06-18 14:58:37

标签: python multiprocessing

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

当我在笔记本电脑上尝试此代码时,我通过活动监视器应用程序检查了处理器,结果表明某些处理器正常工作。因此,使用此代码,我在工作站上运行了该程序(核心最多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使用率会比此增加。我在哪里做错了什么?

1 个答案:

答案 0 :(得分:1)

您的池中有24个进程,但是可迭代的test_list中只有5个项目。 当您从我的答案here中选择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)

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

请注意:test_list应该在if __name__ == '__main__':块中定义。