在Python的List Comprehensions中插入一个tkinter进度条

时间:2014-08-05 17:59:38

标签: python tkinter progress-bar list-comprehension

通常我使用一个简单的循环在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进度条

1 个答案:

答案 0 :(得分:1)

如果您担心效果,请取消对self.update()的通话。它会使你的循环速度降低三个数量级。至少你应该每隔1000次左右调用它。

在快速测试中,我可以进行10,000次简单计算,导致1%的值在约.0016秒内附加到循环中。当我在循环中添加对update的调用时,时间会扩展到1.0148秒。

你在评论中说,你有8000万行要迭代。我的相同代码可以在 12秒中处理8000万次计算,而在 2小时时,我会添加一次更新调用。

与删除或减少更新调用相比,将代码转换为使用列表推导将产生微不足道的影响。