Многофункциональная обработка Python для решения функций, выполняющих как чтение, так и запись файла - PullRequest
0 голосов
/ 16 мая 2019

У меня большой список файлов, которые я обрабатываю с помощью такой функции:

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

...