Python: периодическая запись при чтении большого объема данныхPython

Программы на Python
Anonymous
Python: периодическая запись при чтении большого объема данных

Сообщение Anonymous »

У меня большое количество файлов изображений (около 220 000), хранящихся на быстром локальном SSD. Используя Python и библиотеку tifffile, я считываю изображения в виде массивов numpy, которые затем объединяются в один массив и сохраняются на диск. Чтение этого объединенного массива происходит намного быстрее, чем чтение файлов по отдельности.
Я пытаюсь понять, почему во время чтения данных происходят записи (более 30 МБ/с) ( Ожидается: происходят все чтения, затем создается объединенный массив, затем происходит одна запись). Очевидно, что при этом доступной оперативной памяти более чем достаточно (весь набор данных умещается в оперативной памяти):
[img]https://i.sstatic. net/ZLR47OHm.png[/img]

Я предполагаю, что в памяти все еще есть данные (но не помечены как использующие память), чтобы объяснить, почему первые ~ 15 ГБ загружаются без какого-либо чтения с диска. (чтение начинается с левой стороны графика).
Простой пример кода выглядит примерно так:
import os
import numpy as np
from tifffile import imread
from functools import partial
from tqdm.contrib.concurrent import process_map

def get_image(dir, ID):
# Load as a numpy array
return imread(os.path.join(dir, ID + ".tif"))

def generate_numpy_file(IDs, folder, fname="train"):
_read = partial(get_image, folder)

print("Reading Data")
images = process_map(_read, IDs, max_workers=20, chunksize=1024)
images = np.array(images)

print("Writing Data")
np.save(os.path.join(SCRIPT_DIR, "Datasets", fname), images)


Подробнее здесь: https://stackoverflow.com/questions/788 ... nt-of-data

Вернуться в «Python»