创建一个使用函数 [Python 3.4] 更新的进度条

Create a Progress bar that updates with a function [Python 3.4]

我有一个脚本,一次会 运行 几个小时,我不知道它是否被冻结,还剩多长时间等等。我想我会尝试为它制作一个进度条,但我似乎无法全神贯注地创建一个不会简单地每 X 秒递增一次的进度条(看着你 tkinter)。

最终目标是获得一个非常简单的进度条,让我知道我的脚本仍在正常运行:

1) 将 bootstrap 支持值添加到系统发育树中,使用 "support_tree = get_support(target_tree,list_of_trees)" 来自 biopython 的 Phylo。 <- 此步骤最多需要 8 小时。

2) 开始一个新的进度条,当它循环遍历树上的节点时检查低支持度的节点(节点数已知,for 循环打开的步骤已知)随着它循环遍历而递增树的节点。

我很确定这只是我缺乏经验,但我找不到涵盖如何将任何类型的进度条挂接到循环函数等的教程,或者这不仅适用于 python 2.x 非常感谢任何帮助!

可以使用任何 GUI 包手动制作进度条。我喜欢 tkinter(或 ttk,一个通常包含在 tk 中的扩展包),它有一个内置的进度条 class.

这是一个使用它的例子How to create downloading progress bar in ttk?

这是文档https://docs.python.org/2/library/ttk.html#progressbar

这是新墨西哥科技的页面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 页面上;这只是简单的用法。 "value"属性是进度多少,"maximum"属性是极限进度。如果您不习惯使用 tkinter 小部件,有很多资源可以帮助您入门(如果您愿意,代码可以非常简洁)