Запись прогресса функции `enumerate` в Python - PullRequest
0 голосов
/ 13 января 2020

Я работаю над оптимизацией сценария Python (версия 2.7; ограничен из-за старых модулей, которые мне нужно использовать), который работает на AWS и пытается точно определить, сколько ресурсов мне нужно в среде, которую я создаю , Чтобы сделать это, я записываю довольно много информации на консоль при запуске сценария и тестирую различные конфигурации ресурсов.

Одним из узких мест является список из 32 000 элементов, который проходит через Python enumerate функция. Это займет довольно много времени, и мой сценарий будет слеп к его прогрессу, пока он не закончится. Я предполагаю, что enumerate каким-то образом перебирает элементы, поэтому подумал, что я могу добавить запись или печать в этом l oop. Я знаю, что это 'hacky', но пока он будет работать нормально, так как он временный, когда я запускаю тесты.

Я не могу найти, откуда запускается функция (я нашел класс Enumerate в Модуль numba. Я пытался там печатать, но он не работал). Я знаю, что это часть __builtin__ module, и мне тоже трудно его отследить, и я попробовал несколько методов, чтобы найти его точное местоположение, например печать __builtin__.__file__, но безрезультатно.

Мой вопрос, ) Можете ли вы помочь мне определить, где находится функция, и если это хороший подход? или б) если есть лучший подход к этому.

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 13 января 2020

Я предлагаю вам использовать модуль tqdm. tqdm

Модуль tqdm используется для визуализации хода выполнения перечисления. Он работает с итерациями (длина известна или неизвестна).

Расширяя класс tqdm, вы можете регистрировать необходимую информацию после любого необходимого количества итераций. Вы можете найти больше информации в строке документации класса tqdm.

...