通常我使用一个简单的循环在tkinter中插入一个不确定的进度条。 例子
self.pbar_ind = ttk.Progressbar(self, orient="horizontal", length=300, mode="indeterminate")
new_point_in_list = list()
for point in point_in_list:
self.pbar_ind.step(1)
self.update()
if point > 2:
new_point_in_list.append(point)
现在我正在使用List Comprehensions来加速我的计算
new_point_in_list = [point for point in point_in_list if point > 2]
我想知道是否可以在List Comprehensions中插入Tkinter进度条
答案 0 :(得分:1)
如果您担心效果,请取消对self.update()
的通话。它会使你的循环速度降低三个数量级。至少你应该每隔1000次左右调用它。
在快速测试中,我可以进行10,000次简单计算,导致1%的值在约.0016秒内附加到循环中。当我在循环中添加对update
的调用时,时间会扩展到1.0148秒。
你在评论中说,你有8000万行要迭代。我的相同代码可以在 12秒中处理8000万次计算,而在 2小时时,我会添加一次更新调用。
与删除或减少更新调用相比,将代码转换为使用列表推导将产生微不足道的影响。