繁体   English   中英

在一定数量的核上进行多处理

[英]Multiprocessing on a set number of cores

在下面的代码中, Function是一个要调用的函数,如何指定要用作10的处理器数?

  if __name__ == '__main__':
        jobs = []

        for l in lst:
           p = multiprocessing.Process(target=Function, args=(l,))
           jobs.append(p)
           p.start()

此代码将完全接管我的服务器,因此如何将其限制为十个内核? 我应该把它放在一个循环中吗?

鉴于您实际上是在函数列表上映射函数,我建议您使用multiprocessing.Pool

这是一个类,它创建一个有限数量的工作线程池,然后可以用来在输入列表上运行一个函数而不是每个函数调用创建一个线程的Process ,然后同时运行它们

在python <3.3版本中使用它的一个例子是:

from multiprocessing import Pool
import contextlib

num_threads = 10

with contextlib.closing( Pool(num_threads) ) as pool:
    results = pool.map(Function, lst)

如果你使用的是python 3,那么默认情况下Pool类可以使用上下文管理器,代码简化为:

from multiprocessing import Pool

num_threads = 10

with Pool(num_threads) as pool:
    results = pool.map(lst)

使用进程池分配设置数量的进程来执行任务: https//docs.python.org/2/library/multiprocessing.html#using-a-pool-of-workers

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM