Перво-наперво, я настоятельно рекомендую написать Clean Code
, то есть, когда вы пишете Python
не пишите C#/Java
(a.k.a PEP8 )
Другая проблема: попытайтесь быть pythonic
( иногда это даже делает ваш код быстрее ),
например, вместо вашего getResumeList()
в генераторе, попробуйте generator expression
:
def get_resume_list(dir_path):
files = os.listdir(dir_path)
return (f for f in files if f.endswith(".pdf"))
Или составление списка во втором примере:
def get_resume_list(dir_path):
files = os.listdir(dir_path)
return [f for f in files if f.endswith(".pdf")]
Когда вы открываете файл, попробуйте использовать with
, потому что люди, как правило, забывают закрывать файлы.
По эффективности понятно, что для этого созданы генераторы.
С помощью генератора вы можете увидеть каждый результат, как только он будет готов, и не дожидаясь завершения обработки всего кода.
Что касается производительности, я не знаю, сколько PDF-файлов вы пытаетесь проанализировать,
но я провел небольшой тест на 1056 pdf-файлах, и итератор был быстрее на пару секунд ( обычно это имеет место в отношении скорости ).
генератор для эффективности, посмотрите на этот ответ Рэймонда Хеттингера (разработчика ядра Python), объясняющий, когда не , чтобы использовать генераторы.
Для заключения: в вашем случае эффективнее использовать генератор и быстрее с итератором.