Python多处理可解决同时执行文件读取和写入的功能

时间:2019-05-16 08:08:48

标签: python python-multiprocessing

我使用诸如

之类的功能处理的文件很大。
import pandas as pd
def readdatafile(reportdate: str)->None:
    df = pd.read_excel("{}_datafile.xlsx".format(reportdate))

    mergeddf = makemergeddf(df, reportdate)
    mergeddf.to_excel("{}_mergeddf.xlsx".format(reportdate))

    keydf = makekeydf(mergeddf)
    keydf.to_excel("{}_keydf.xlsx".format(reportdate))

    productdf = makeproductdf(mergeddf)
    productdf.to_excel("{}_productdf.xlsx".format(reportdate))

    lineleveldf = mergeddf.apply(mergeddfrowhandler, axis = 1)
    lineleveldf.to_excel("{}_lineleveldf.xlsx".format(reportdate))
    print("{}: done".format(reportdate))

对于单进程,单线程,我会这样做:

for date in reportdatelist:
    readdatafile(date)

每个文件大约需要3分钟的时间,因此我将根据this之类的来源以以下方式探索多处理模块:

import multiprocessing

start = time.time()
pool = multiprocessing.Pool()
pool.map(readdatafile, reportdatelist[:6])
pool.close()
print(time.time() - start)

即使半小时后报告日期的子列表较小,该程序仍在运行,而没有将任何文件写入目标文件夹。我想知道是否是因为readdatafile()中既有文件读取又有文件写入?使用多处理或其他模块来解决此问题的任何建议都将有所帮助。谢谢

0 个答案:

没有答案