[英]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.