我使用诸如
之类的功能处理的文件很大。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()
中既有文件读取又有文件写入?使用多处理或其他模块来解决此问题的任何建议都将有所帮助。谢谢