所以我只是想从这个回购重新运行代码: https://github.com/dennybritz/reinforcement-learning/blob/master/MC/MC%20Prediction%20Solution.ipynbsys.stdout.flush不jupyter笔记本工作
我关注的是打印的部分:
for i_episode in range(1, num_episodes + 1):
# Print out which episode we're on, useful for debugging.
if i_episode % 1000 == 0:
print "\rEpisode {}/{}.".format(i_episode, num_episodes)
sys.stdout.flush()
他是用sys.stdout.flush()创建一个简单的“进度”输出。你可以看到他的回购输出只显示最后一集迭代10000/10000
,因为使用sys.stdout.flush()
但是,当我尝试在我的笔记本jupyter运行它(我使用运行cmd命令jupyter notebook
)我想sys.stdout.flush()不工作,这表明每一个印刷迭代,不会覆盖前一个:运行jupyter,使其工作时
Episode 1000/10000.
Episode 2000/10000.
Episode 3000/10000.
Episode 4000/10000.
Episode 5000/10000.
Episode 6000/10000.
Episode 7000/10000.
Episode 8000/10000.
Episode 9000/10000.
Episode 10000/10000.
我缺少的东西?
这是'\ r's导致覆写,而不是'flush()' - 只是确保内容不会被卡在缓冲区中。由于它专注于关键组件之外的其他内容,因此如目前所写,这有点令人困惑。 –
哦..我不知道那里有'\ r'符号,谢谢:)它现在清楚了 – malioboro