Многопроцессорная обработка при сохранении файлов Excel в цикле в python

#python #for-loop #multiprocessing

#python #для цикла #многопроцессорная обработка

Вопрос:

Я хочу применить многопроцессорную обработку для приведенного ниже скрипта, который сохраняет файлы Excel в цикле for.

 import pandas as pd
df = pd.DataFrame({'month': [1, 4, 7, 10]})

for i in df.index:
    df.to_excel(str(df['month'][i]) '.xlsx')
    print(i)
 

Я пытался, но не могу получить результаты:

 from multiprocessing import Pool

def savexls(df):
    for i in df.index:
        df.to_excel(str(df['month'][i]) '.xlsx')
        print(i)

if __name__ == '__main__':
    pool = Pool()              
    pool.map(savexls, df)
 

Можете ли вы мне в этом помочь? Спасибо.

Ответ №1:

map будет выполнять цикл for

 from multiprocessing import Pool

def savexls(x):
    pd.to_excel(x)
    print(x)

if __name__ == '__main__':
    lst = [str(df['month'][i]) '.xlsx' for i in df.index]
    pool = Pool()              
    pool.map(savexls, lst)
 

Комментарии:

1. Я думаю, что pd.to_excel(x) должен быть df.to_excel(x)

2. И есть ли у вас какое-либо альтернативное решение для этого?

3. да, df правильный, вы могли бы использовать swifter или dask для выполнения операции с самим df