@krekerov
Fullstack ninja

Как улучшить производительность скрипта python?

Приветствую. Есть простой цикл, который перебирает изображения с размером около 50 Мб.
OpenFile это библиотека, с помощью которой я открываю файлы. Если открывать 20 файлов по порядку, то работает быстро, после 50 файлов уже начинается замедление. Я думал это кеширование какое то локальное, но скорость начинает падать пропорционально количеству файлов.
что делать?
for file in files[:20]:
            print file
            dataset = OpenFile(file)
            data = ReadAsArray()
            print data [3000, 5000]
  • Вопрос задан
  • 2635 просмотров
Пригласить эксперта
Ответы на вопрос 4
dizballanze
@dizballanze
Software developer at Yandex
Открывайте файлы в конструкции `with` чтобы после выхода из тела конструкции (и завершении работы с файлом) ресурсы освобождались.
Еще советую прочитать вот этот пост по поиску утечек памяти.
Ответ написан
Комментировать
kivsiak
@kivsiak
software engineer
Ответ написан
Комментировать
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Используйте numpy для работы с большими массивами, будет щазтие! Там же есть scipy и работа с изображениями, может пригодится...

import numpy
...
for file in files[:20]:
            print file
            dataset = OpenFile(file)
            # data = ReadAsArray()
            data = numpy.fromfile(dataset, dtype=numpy.dtype(numpy.int16))
            dataset.close()
            print data [3000, 5000]
Ответ написан
unclechu
@unclechu
Если по хардкору, — то можно на каждый файл пустить по процессу асинхронно, или хотябы по пачке файлов, штук 10 например. Процесс обработал, вернул какой-то результат, завершился. А главный скрипт в это время оперирует этими процессами и собирает с них полученные данные.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы