Я читаю много (скажем, 1k) файлов CERN ROOT, используя цикл и сохраняю некоторые данные во вложенном массиве NumPy.Использование циклов делает это последовательной задачей, и каждому файлу требуется некоторое время для завершения процесса.Поскольку я работаю над моделью глубокого обучения, я должен создать достаточно большой набор данных - но само время чтения занимает очень много времени (чтение 835 событий занимает около 21 минуты).Кто-нибудь может подсказать, возможно ли использовать несколько графических процессоров для чтения данных, чтобы для чтения потребовалось меньше времени?Если да, то как?
Добавление некоторых подробностей: я подтолкнул программу на GitHub, чтобы это было видно (, пожалуйста, дайте мне знать, если публикация ссылки на GitHub не разрешена, в этом случае я будуразместить соответствующую часть здесь ):
https://github.com/Kolahal/SupervisedCounting/blob/master/read_n_train.py
Я запускаю программу как:
python read_n_train.py <input-file-list>
, где аргумент представляет собой текстовый файл, содержащий списокфайлов с адресами.Я открывал ROOT файлы в цикле в функции read_data_into_list()
.Но, как я уже говорил, эта последовательная задача отнимает много времени.Мало того, я заметил, что скорость чтения ухудшается, когда мы читаем все больше и больше данных.
Тем временем я пытался использовать пакет slurmpy https://github.com/brentp/slurmpy С этим я могу распределить работу в:скажем, N рабочих узлов, например.В этом случае отдельная программа чтения прочитает назначенный ей файл и вернет соответствующий список.Просто в конце мне нужно добавить списки.Я не мог найти способ сделать это.
Любая помощь высоко ценится.
С уважением, Колахал