我目前正在研究'''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()'''实际上并没有进行多进程...我做错了什么吗?
答案 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循环中,它等待每个进程。