Чтение и обработка многих файлов параллельно

#python #pandas #memory-management #multiprocessing #out-of-memory

#python #pandas #управление памятью #многопроцессорная обработка #нехватка памяти

Вопрос:

Используя следующий код, я пытаюсь параллельно читать, обрабатывать и объединять кучу файлов CSV.

 def read_process(file): 
    df = pd.read_csv(file)
    process_df(df)
    return df 

if __name__ == '__main__':
    path = '/path/to/directory/'
    files = [os.path.join(path, file) for file in os.listdir(path)]

    with Pool() as pool:
        dfs = pool.map(read_process, files)
        df = pd.concat(dfs, ignore_index=True)
 

Однако потребление памяти экспоненциально увеличивается для больших наборов данных. Как я могу ограничить объем используемой памяти Pool ?

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

1. возможно, ограничить количество рабочих — т. е. Pool(2) для 2 рабочих.

2. или, может read_process быть, введите и сохраните csv в новый файл, а затем создайте код, который считывает csv по частям и сохраняет в другом файле.