Python多进程处理涉及文件读写的函数

2024-09-28 13:04:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的文件列表,我使用如下函数处理这些文件:

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)

每个文件都需要c.3分钟,因此我将根据this等源代码以以下方式探索多处理模块:

import multiprocessing

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

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


Tags: 文件toimportformat列表timexlsxexcel

热门问题