【问题标题】:Regarding relation of multiprocessing with cores of server关于多处理与服务器核心的关系
【发布时间】:2015-02-18 07:46:16
【问题描述】:

对于以下代码,假设我有一台 32 核的机器,python 会决定为我创建多少进程?

from multiprocessing import Process
for i in range(100):
    p = Process(target=run, args=(fileToAnalyse,))
    p.start()

【问题讨论】:

    标签: python python-2.7 python-multiprocessing


    【解决方案1】:

    不,它不由你决定。

    要限制子进程的数量,需要使用a pool of workers

    文档中的示例:

    from multiprocessing import Pool
    
    def f(x):
        return x*x
    
    if __name__ == '__main__':
        pool = Pool(processes=4)              # start 4 worker processes
        result = pool.apply_async(f, [10])    # evaluate "f(10)" asynchronously
        print result.get(timeout=1)           # prints "100" unless your computer is *very* slow
        print pool.map(f, range(10))          # prints "[0, 1, 4,..., 81]"
    

    如果你省略processes=4,它将使用multiprocessing.cpu_count,它返回cpu的数量。

    【讨论】:

      猜你喜欢
      • 2023-03-27
      • 2014-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多