#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