Форум сайта python.su
0
Добрый день.
Прошу подсказать (что бы не придумывать) как обычно сохраняют большое количество файлов на диск?
например мой файл называется вот так:
f789abc898d6892df98d09a8f8.jpg
как понимаю, что нужно сохранить вот так:
/f7/89/f789abc898d6892df98d09a8f8.jpg
может быть есть что то готовое на этот случай?
Спасибо.
Отредактировано ivn (Июнь 28, 2019 23:30:25)
Офлайн
568
Давайте начнём с того, понимаете ли вы как сохранить один файл на диск, а если понимаете, то знаете ли вы как провести эту операцию для N итераций?
Офлайн
253
ivnНу надо понять что вас беспокоит в сохранении большого числа файлов. Уменьшение ресурса флешки? Повышение времени доступа к файлам?
может быть есть что то готовое на этот случай?
Офлайн
0
FishHookесть вот такой код:
Давайте начнём с того, понимаете ли вы как сохранить один файл на диск, а если понимаете, то знаете ли вы как провести эту операцию для N итераций?
hash_image = m.hexdigest() image_name = hash_image + '.jpg' with open(os.path.join(app.config['UPLOAD_FOLDER'], image_name), 'wb') as f: f.write(response_image_content)
Офлайн
0
doza_andда, меня интересует скорость доступа
Офлайн
186
> там больше 30К мелких картинок я как понимаю, надо не в одну папку писать и в кукую то структуру папок
Ты правильно понимаешь. Тебе нужно создать каталог с произвольным названием (например 1, 2, 3, …) и записать туда 1000 файлов, после чего создать другой каталог и записать в него вторую 1000 файлов и т.д. Ну а что бы ты знал где какой файл находится нужно ещё создать индексный файл и записывать в него в какой каталог какой файл ты сохранил.
Офлайн
568
ivnА я не понимаю, объясните, почему плохо писать 30к картинок в один каталог
там больше 30К мелких картинок
я как понимаю, надо не в одну папку писать и в кукую то структуру папок
Офлайн
294
FishHookписать не плохо, читать плохо. Это особенности ФС , при достаточно большом колличестве файлов в папке, производительнос ФС падает даже на чтение. Это связано с особеностями работы поиска файла на диске драйвером ФС. Драйвер не знает точно где храниться тот или иной файл на диске физически, и например для открытия файла из папки он перебирает все файлы в папке пока (не)найдет нужный. Когда их over КK он каждый раз перебирает over КK инод чтобы найти нужный файл, что не может не сказаться на производительности. Конечно же это все упрощенно и утрировано, у каждой ФС свои тараканы, там используться разные алгоритмы для оптимизации и ускорения поиска, но помогает это ровно до какогото определенного количества, а потом, все равно начинаеться замедление работы. Сейчас считается такое количество равным порядка 10К. по крайней мере для наболее распрострянненых NTFS и extfs.
А я не понимаю, объясните, почему плохо писать 30к картинок в один каталог
[code python][/code]
Отредактировано PEHDOM (Июнь 29, 2019 22:52:37)
Офлайн
857
ivnВот надо подумать, что делать с одноимёнными файлами. Как бы они не назывались, простыми именами или хешами, одинаковые имена начнут указывать на одни и те же файлы в этой структуре директорий и файлов.
Прошу подсказать (что бы не придумывать) как обычно сохраняют большое количество файлов на диск?
например мой файл называется вот так:
Офлайн
568
>>> писать не плохо, читать плохо. Это особенности ФС
Во первых, я спрашивал не тебя, а топикстартера, как ты наверное догадался, чтобы намекнуть товарищу, что задачу надо описывать во всей её полноте
Во-вторых, ext4 ищет файлы в B-tree
Офлайн