我正在使用以下代码在python中使用Multiprocessing并行运行两个模型:
def pro(process):
#print(process)
os.system('python {}'.format(process))
def run_model_multiprocessing(ml_model1,ml_model2):
processes = (ml_model1,ml_model2)
pool = Pool(processes=7)
start = datetime.datetime.now()
print('Start:',start)
pool.map(defs.pro, processes)
end = datetime.datetime.now()
print('End :',end)
total = end-start
print('Total :', total)
但是我的两个模型都返回一个输出文件,但是在上述多处理过程中我无法获得该输出文件。我已经使用下面的代码从两个模型中获取了返回的输出,但是对我来说却没有用。
def run_model_multiprocessing(ml_model1,ml_model2):
processes = (ml_model1,ml_model2)
pool = Pool(processes=7)
start = datetime.datetime.now()
print('Start:',start)
outdf1,outdf2 = pool.map(defs.pro, processes)
end = datetime.datetime.now()
print('End :',end)
total = end-start
print('Total :', total)
return outdf1, outdf2
尽管程序运行成功,但是outdf1
和outdf2
中没有任何内容
答案 0 :(得分:0)
如果我正确理解了您的查询,则您的目标是并行运行两个机器学习模型(ml_model1,ml_model2)以进行预测。
进程池仅提供数据并行性(通过并行处理数据的不同进程分配数据。)
如果您的目标并行运行两个机器学习模型以进行预测,则应使用基于进程的并行性或基于线程的并行性。
请参阅以下链接。