使用多处理功能在python3.7中并行运行不同的功能

时间:2020-05-19 11:00:13

标签: python python-multiprocessing

我想在python中并行运行两个不同的函数,我使用了以下代码:

def remove_special_char(data):
    data['Description'] = data['Description'].apply(lambda val: re.sub(r'^=', "'=", str(val))) # Change cell values which start with '=' sign leading to Excel formula issues
    return(data)

file_path1 = '.\file1.xlsx'
file_path2 = '.\file2.xlsx'


def method1(file_path1):
    data = pd.read_excel(file_path1)
    data= remove_special_char(data)
    return data

def method2(file_path2):
    data = pd.read_excel(file_path2)
    data= remove_special_char(data)
    return data

我正在使用下面的Pool进程,但无法正常工作。

from multiprocessing import Pool

p = Pool(3)
result1 = p.map(method1(file_path1), args=file_path1) 
result2 = p.map(method2(file_path1), args=file_path2) 

我想同时运行这两种方法,以节省执行时间,并同时获取返回值。

1 个答案:

答案 0 :(得分:0)

我不知道您为什么用不同的参数名称两次定义相同的方法,但是无论如何,mapPool方法将函数作为第二个参数作为其第一个参数是一个迭代。 map的作用是在iterable的每个项目上调用函数,并返回包含所有结果的列表。因此,您要做的更多是:

from multiprocessing import Pool

file_paths = ('.\file1.xlsx', '.\file2.xlsx')

def method(file_path):
    data = pd.read_excel(file_path)
    data= remove_special_char(data)
    return data

with Pool(3) as p:
    result = p.map(method, file_paths)