2015-03-20 2 views
0

У меня есть скрипт, который будет работать в течение нескольких часов, и я понятия не имею, заморожено ли оно, сколько времени осталось и т. Д. Я решил, что попробую и сделать для него индикатор выполнения, но я не могу обернуть голову вокруг создания индикатора выполнения, который не просто увеличивается каждые X секунд (смотря на вас tkinter).Создайте панель выполнения, которая обновляется с помощью функции [Python 3.4]

Конечная цель была бы получить очень простой индикатор, который позволяет мне знать, мой сценарий все еще работает как:

1) добавляет бутстраповское значение поддержки для филогенетического дерева с использованием «support_tree = get_support (target_tree , list_of_trees) "из Phylo от biopython. < - этот шаг занимает до 8 часов.

2) запускает новый индикатор выполнения, когда он проходит через узлы на дереве, проверяя узлы с низкой поддержкой (известно, что количество узлов известно, шаг, на котором работает цикл цикла), который увеличивается, когда он проходит через узлы дерева.

Я уверен, что это просто мой недостаток опыта, но я не смог найти учебник, посвященный тому, как подключить любой тип индикатора выполнения к функциям цикла и т. Д., Или который был доступен не только для python 2.x Any помощь очень ценится!

ответ

1

Индикатор прогресса может быть выполнен вручную с использованием любого пакета GUI. Мне нравится tkinter (или ttk, обычно включаемый пакет расширения для tk), который имеет встроенный класс progressbar.

вот пример его использования How to create downloading progress bar in ttk?

Вот документация https://docs.python.org/2/library/ttk.html#progressbar

Вот страница New Mexico Tech на нем http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-Progressbar.html

Простое использование было бы

p = ttk.Progressbar(parent, orient=HORIZONTAL, length=200, mode='determinate') 
p['maximum'] = 100 
for i in range(100): 
    time.sleep(1) 
    p['value'] = 1 

Хотя этого примера может не нарисовать, если вы не навязываете это. Лучший пример - на связанной странице SO; это просто простое использование. Свойством «ценность» является то, насколько достигнут прогресс, а «максимальное» свойство является предельным прогрессом. Если вы не привыкли к использованию виджетов tkinter, у вас есть много ресурсов, чтобы вы начали (код может быть очень кратким, если вы хотите)

+0

@Lostferret не стесняйтесь повышать, если это помогло вам –

+0

Спасибо! Так получилось - я все равно попадаю в стену, когда запускаю скрипт в своем кластерном ... глупых байесовских анализах. Я просто ударил по 15 требованиям, так что вот вверху! – Lostferret

Смежные вопросы