Пакетное преобразование xls в csv с помощью параллельной обработки - PullRequest
0 голосов
/ 21 декабря 2018

Я выполняю пакетное преобразование 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)
...