【问题标题】:how to change the number of processes in multiprocessing.pool?如何更改 multiprocessing.pool 中的进程数?
【发布时间】:2014-03-13 10:51:00
【问题描述】:

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

【问题讨论】:

    标签: python-2.7 multiprocessing pool


    【解决方案1】:

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

    但也许更重要的是,您的机器具有有限数量的处理器。一般来说,这是在池中使用的理想进程数。如果您拥有的不止这些,那么您的池工作人员将相互争夺对您 CPU 的访问权。如果您的问题是 CPU 密集型的,那么拥有比 CPU 更多的工作人员没有任何好处。

    如果您想限制多处理池使用的 CPU 数量,那么最好提前确定硬限制应该是多少,并从一开始就实例化池以使用该数量的工人:

    pool = mp.Pool(processes=4)
    

    还要注意mp.cpu_count() 返回可用处理器的数量。如果不设置processes参数,mp.Pool默认使用mp.cpu_count()进程。

    【讨论】:

      猜你喜欢
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多