使用Python的multiprocessing.Pool(),我真的在做多处理吗?

时间:2019-11-17 02:20:46

标签: python multiprocessing

我目前正在研究'''multiprocessing'''软件包。这是我在'''multiprocessing.Process'''和'''multiprocessing.Pool'''上尝试过的简单代码。

pd.set_option('display.max_rows', 1000, 'display.width', 1000, 'display.max_columns', 1000)

我的笔记本电脑有12个杯芯,因此我希望第一项工作和第二项工作会在相同的时间内完成。但是,作业1在3秒内完成,而作业2在12秒内完成。在我看来'''multiprocessing.Pool()'''实际上并没有进行多进程...我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

在两项工作中,您没有使用多重处理。 starmap()将指定的方法(list_append)分配给第二个参数中提供的每个arg列表,但是您只提供一个带有一个元素的列表,因此for循环的每次迭代执行一个过程。我想你打算这样做:

p = multiprocessing.Pool(8)
p.starmap(list_append, [(size, i, list()) for i in range(procs)])

没有包含for的循环。

还要注意,starmap等待结果,因此在for循环中,它等待每个进程。