如何更改multiprocessing.pool中的进程数?

时间:2014-03-13 10:51:00

标签: python-2.7 multiprocessing pool

我想更改multiprocessing.pool中的流程数量,但我不知道该怎么做。 有没有办法做到这一点,或者我应该尝试杀死旧的,并创建一个具有不同进程数的新池,如果是这样,我怎么能杀死旧池?使用close()就足够了吗?

1 个答案:

答案 0 :(得分:1)

有一个私有方法,multiprocessing.pool._repopulate_pool可以更改池中的工作者数量。但是,我不认为你应该使用它。首先,由于方法的名称以下划线开头,因此它是一个私有方法 - 一个实现细节。从理论上讲,它可能会在未来发生变化并破坏您的代码。

但也许更重要的是,您的机器具有有限数量的处理器。通常,这是您在池中使用的理想进程数。如果你有更多,那么你的池工作者将在他们之间争夺访问你的CPU。如果您的问题受CPU限制,那么拥有比CPU更多的工作者是没有优势的。

如果要限制多处理池使用的CPU数量,那么最容易预先确定硬限制应该是什么,并实例化池以从一开始就使用该数量的工作程序:

pool = mp.Pool(processes=4)

另请注意,mp.cpu_count()会返回可用的处理器数。如果您未设置processes参数,则默认情况下mp.Pool将使用mp.cpu_count()个进程。