Я выполняю пакетное преобразование 30-гигабайтных файлов xls в csv на регулярной основе.Чтобы сократить время, как я должен использовать параллельную обработку на ПК с i5 windows.(В настоящее время на конвертацию 30 ГБ у меня уходит 3 часа).Я новичок
import glob
import pandas as pd
excel_files = glob.glob(r'filepath\*.xls')
for excel in excel_files:
out = excel.split('.')[0] +'.csv'
df = pd.read_excel(excel) # if only the first sheet is needed.
df.to_csv(out)
Код с многопроцессорной обработкой сейчас работает, но занимает больше времени (в 3 раза больше!), Чем приведенный выше код.Прочитал и обнаружил, что это может быть связано с операциями ввода-вывода.Можем ли мы ускорить это?
import multiprocessing
import glob
import pandas as pd
excel_files = glob.glob(r'C:\Test\*.xls') # the path where your files are
counter= 0
def multi():
for excel in excel_files:
out = excel.split('.')[0] +'.csv'
df = pd.read_excel(excel) # if only the first sheet is needed.
df.to_csv(out)
return
if __name__ =='__main__':
#freeze_support()
queue = multiprocessing.Queue()
#num_cores=multiprocessing.cpu_count()
#print(num_cores)
pool = multiprocessing.Pool()
result= pool.map(multi,excel_files,8)