计算完成时更新 for 循环内的输出

Update output inside a for loop when calculation completes

我有一个日期列表,运行正在为每个日期创建一个函数,如下所示:

dates = ['2017-12-29', '2018-12-31', '2019-12-31', '2020-12-31','2021-12-31']
for date in dates:
     display(key_metric(date))

这个函数渲染了一个HTML table,因此我得到5个outputs/tables一个接一个像这样:(这只是第一个table)

现在,key_metric 函数需要大约 5-10 秒才能 运行 处理任何参数。现在,我想要实现的是 tables 不应该附加到另一个,而是在同一个地方更新。我的意思是:显示 1st table ,当计算 2nd 时,删除 1st 并在同一位置显示 2nd 。希望我清楚了。

我试过 IPython.display.clear_output 但它会立即清除输出,而无需等待其他计算完成。谢谢!

一个简单的解决方案是将函数的结果存储到一个变量中,然后用它来显示。例如:

dates = ['2017-12-29', '2018-12-31', '2019-12-31', '2020-12-31','2021-12-31']
for date in dates:
     key_met = key_metric(date)
     display.clear_output()
     display(key_met)

这将在计算完成后更新 table。