使用Multiprocessing从两个不同的目录中并行运行两个python代码

问题描述 投票:0回答:1

以下是我的代码,用于使用多重处理并行运行两个python代码:

defs.py

import os 

def pro(process):      
    #print(process)                                                       
    os.system('python {}'.format(process)) 

Multiprocessing.py

import os                                                                       
from multiprocessing import Pool
import multiprocessing as mp
import defs
import datetime
import pandas as pd

processes = ('python_code1.py','python_code2.py')

if __name__ == '__main__':                                                                                
    pool = Pool(processes=4)
    start = datetime.datetime.now()
    print('Start:',start)   
    pool.map(defs.pro, processes)
    end = datetime.datetime.now()
    print('End :',end)   
    total = end-start
    print('Total :', end-start)

此代码运行得很好。但是我的要求是我需要从两个不同的目录运行python代码'python_code1.py'和'python_code2.py'。

所以我在Multiprocessing.py中进行了以下更改:

path1 = r'C:\Users\code1\python_code1.py'
path2 = r'C:\Users\code2\python_code2.py'

processes = (path1,path2) 

但是这对我不起作用。

我的Multiprocessing.pydefs.py保留在路径`C:\ Users \ Multiprocessing \'

python python-multiprocessing
1个回答
0
投票

使用asyncio提出一种优雅的解决方案。它被用作多个Python异步框架的基础,这些框架提供了高性能的网络和Web服务器,数据库连接库,分布式任务队列等。此外,它还具有高级和低级API来解决任何类型的问题。 。您可能会像我一样发现语法更容易:

import os
import asyncio
    def background(f):
        def wrapped(*args, **kwargs):
            return asyncio.get_event_loop().run_in_executor(None, f, *args, **kwargs)

        return wrapped

    @background
    def pro(process):      
    #print(process)                                                       
    os.system('python {}'.format(process)) 

processes = (r'C:\Users\code1\python_code1.py',r'C:\Users\code2\python_code2.py')
for process in processes:
    pro(process)

关于并行化for循环的详细answer。您可能会发现有用。

© www.soinside.com 2019 - 2024. All rights reserved.