Какие варианты есть сохранения сжатых изображений в том-же порядке(по дате) Python
У меня есть код на python который выполняет оптимизацию картинок по заданным параметрам, проблема в том что я хочу оставить структуру данных не изменой, то есть все изображения которые были взяты из папки, должны остаться в томже порядке, сортированные по дате после обработки.
Я использую многопоточность чтобы оптимизация была быстрее, но в таком случае сохранения в папку происходит хаотично, (какое изображение быстрее обработалось, такое и будет по дате первое) и тем самым нарушается структура сортировки по дате. Вот кусок кода:
def process_image(file, output_path, jpg_quality, png_compress_level, png_depth, png_colors):
input_file = str(file)
if file.suffix.lower() in [".jpg", ".jpeg"]:
img = compress_image(input_file, jpg_quality, 24, None)
elif file.suffix.lower() == ".png":
img = compress_image_png(input_file, png_compress_level, png_depth, png_colors)
if output_path == os.path.dirname(str(file)):
output_file = os.path.join(output_path, f"compress--{file.stem}{file.suffix.lower()}")
else:
output_file = os.path.join(output_path, f"{file.stem}{file.suffix.lower()}")
if file.suffix.lower() in [".jpg", ".jpeg"]:
img.save(output_file, "JPEG", quality=jpg_quality)
elif file.suffix.lower() == ".png":
img.save(output_file, "PNG", compress_level=png_compress_level)
return img
with ThreadPoolExecutor(max_workers=num_threads) as executor:
futures = [
executor.submit(process_image, file, output_path, jpg_quality, png_compress_level, png_depth, png_colors)
for file in input_paths
]
Уточню программа сначала собирает все файлы из папки. Я пробовал делать так, оптимизировать все изображения записывая их в RAM после сортировать по полученному индексу, и сохранять из RAM на диск, в таком подходе заключается 2 проблемы,
- Нужно следить чтобы была свободна оперативная память(постоянно контралировать, а это сложно)
- Хоть и изображения в конечном результате получаются отсортированные по дате, что логично так-как сохранения идет последовательно без многопоточность, тут возникает проблема долгого сохранения, так-как мы сохраняем по одному изображению, а если их 200 или 300, а на одну будет уходить хотя бы по 1.3 сек, это получается достаточно долго. Если варианты быстрой обработки и сохраненная, но чтобы структура по дате оставалась неизменной?
Я не хочу получить готовый код или решение, мне просто нужны варианты как это можно реализовать, главной задчой которой являеться, быстрая оптимизация, с сохраненнием изначальной структуры(по дате).