在python中使用多处理运行多个ML模型

时间:2020-05-14 07:41:03

标签: python python-3.x multiprocessing

我正在使用以下代码在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

尽管程序运行成功,但是outdf1outdf2中没有任何内容

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的查询,则您的目标是并行运行两个机器学习模型(ml_model1,ml_model2)以进行预测。

进程池仅提供数据并行性(通过并行处理数据的不同进程分配数据。)

如果您的目标并行运行两个机器学习模型以进行预测,则应使用基于进程的并行性或基于线程的并行性。

请参阅以下链接。

Multiprocessing vs Threading Python