У меня большой список файлов, которые я обрабатываю с помощью такой функции:
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)
Даже с меньшим подсписком дат отчетов через полчаса программа все еще работает без записи файлов в целевую папку. Мне интересно, потому что в 10101 * есть и чтение, и запись в файл? Любые предложения, использующие многопроцессорные или другие модули для решения этой проблемы, будут полезны. Спасибо