Чтение в файле HDF5 с многопроцессорностью очень медленно - PullRequest
0 голосов
/ 31 мая 2018

Я тренирую нейронную сеть с данными, которые слишком велики, чтобы поместиться в памяти.Я разделил данные на куски в формате HDF5, и я читаю их по одному и превращаю их в генератор, который я затем подаю в качестве входа в нейронную сеть.Я заметил, что чтение в порциях данных также является узким местом, и чтобы сделать это быстрее, пока сеть обучается на порции данных, я пытаюсь использовать другой процесс для чтения в следующей порции данных.Моя функция для чтения данных представлена ​​ниже:

import h5py 
def get_data(filename):
    current_file = h5py.File(filename, 'r')
    images = current_file['images'].value 
    coords = current_file['coords'].value
    current_file.close()
    return images, coords

Когда я применяю эту функцию напрямую, она отлично работает и считывает данные через ~ 45 секунд:

import time 
start = time()
images, coords = get_data('Single-Cell-Image-Chunks/0.hdf5')
print(time() - start)

Однако, когда я пытаюсь использовать многопроцессорную рабочую систему, она не завершается через 10 минут, и я ее убил:

import time
from multiprocessing import Pool
start = time()
pool = Pool(1)
res = pool.apply_async(get_data, ('Single-Cell-Image-Chunks/0.hdf5',))
images, coords = res.get()
print(time() - start)
...