我发现了有关python中的多处理和多线程的信息,但我不明白基本概念和我发现的所有示例都比我想要做的更困难。使用python进行基本多处理
我有X个需要运行的独立程序。我想启动第一个Y程序(其中Y是我的计算机的核心数量,X >> Y)。只要其中一个独立程序完成,我希望下一个程序在下一个可用内核中运行。我认为这很简单,但我一直在困扰它。任何帮助解决这个问题将不胜感激。
编辑:非常感谢您的回答。我还发现了另一个使用我想分享的joblib模块的解决方案。假设你有一个名为'program.py'的脚本,你想用不同的输入参数组合(a0,b0,c0)运行,并且你想使用所有的核心。这是一个解决方案。
import os
from joblib import Parallel, delayed
a0 = arange(0.1,1.1,0.1)
b0 = arange(-1.5,-0.4,0.1)
c0 = arange(1.,5.,0.1)
params = []
for i in range(len(a0)):
for j in range(len(b0)):
for k in range(len(c0)):
params.append((a0[i],b0[j],c0[k]))
def func(parameters):
s = 'python program.py %g %g %g' % parameters[0],parameters[1],parameters[2])
command = os.system(s)
return command
output = Parallel(n_jobs=-1,verbose=1000)(delayed(func)(i) for i in params)
程序是什么意思?单独的Python脚本?对于Python库来说,如果进程在脚本中作为函数可用,则很方便。 – 2012-07-12 19:04:56
如果它们是真正独立的程序,您可以使用[gridengine](http://gridengine.org/blog/)来处理所有的任务管理。 – 2012-07-12 19:13:57