1. Узнайте, куда направлен вывод, используя атрибут объекта sys.stdout в Python. Это может быть файл или пайп, или вывод в терминал.
2. Если вывод направлен в терминал, используйте библиотеку для рисования прогресс-баров, которая будет автоматически отображать прогресс в виде красиво оформленных строк с цветами, псевдографикой и т.д.
3. Если вывод не идет в терминал, упростите отображение прогресса. Например, выводите только символ возврата каретки без перевода строки, чтобы каждый новый прогресс отображался поверх предыдущего.
4. Для удобства работы с таким выводом можно добавить особый ключ или параметр командной строки, включающий режим простого парсинга результата. Например, выдавайте динамические параметры в виде csv-строк с разделителями, чтобы их можно было легко парсить в GUI.
5. Используйте любую библиотеку для рисования прогресс-бара, которая поддерживает переключение на простой режим вывода при обнаружении пайпа на stdout. Если такой функциональности нет, вы можете реализовать ее самостоятельно, добавив проверку на наличие ключа или TTY.