【发布时间】:2014-03-13 10:51:00
【问题描述】:
我想更改multiprocessing.pool 中的进程数,但我不知道该怎么做。
有没有办法做到这一点,或者我应该尝试杀死旧的并创建一个具有不同数量的进程的新池,如果是这样,我怎样才能杀死旧的池?使用close() 就足够了吗?
【问题讨论】:
标签: python-2.7 multiprocessing pool
我想更改multiprocessing.pool 中的进程数,但我不知道该怎么做。
有没有办法做到这一点,或者我应该尝试杀死旧的并创建一个具有不同数量的进程的新池,如果是这样,我怎样才能杀死旧的池?使用close() 就足够了吗?
【问题讨论】:
标签: python-2.7 multiprocessing pool
有一个私有方法,multiprocessing.pool._repopulate_pool,它可以改变池中工人的数量。但是,我认为您不应该使用它。一方面,由于方法的名称以下划线开头,它是一个私有方法——一个实现细节。从理论上讲,它可能会在未来发生变化并破坏您的代码。
但也许更重要的是,您的机器具有有限数量的处理器。一般来说,这是在池中使用的理想进程数。如果您拥有的不止这些,那么您的池工作人员将相互争夺对您 CPU 的访问权。如果您的问题是 CPU 密集型的,那么拥有比 CPU 更多的工作人员没有任何好处。
如果您想限制多处理池使用的 CPU 数量,那么最好提前确定硬限制应该是多少,并从一开始就实例化池以使用该数量的工人:
pool = mp.Pool(processes=4)
还要注意mp.cpu_count() 返回可用处理器的数量。如果不设置processes参数,mp.Pool默认使用mp.cpu_count()进程。
【讨论】: