【发布时间】:2017-06-12 18:57:10
【问题描述】:
所以我只想从这个 repo 重新运行代码: https://github.com/dennybritz/reinforcement-learning/blob/master/MC/MC%20Prediction%20Solution.ipynb
我的重点是印刷部分:
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() 创建一个简单的“进度”输出。您可以从他的 repo 中看到输出,它只显示最后一个 Episode 迭代 10000/10000,因为使用 sys.stdout.flush()
但是当我尝试在我的 jupyter 笔记本中运行它时(我使用 cmd 命令 jupyter notebook 运行)我认为 sys.stdout.flush() 不起作用,它会显示每个打印的迭代,而不是覆盖前一个:
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.
在运行 jupyter 以使其正常工作时,我是否遗漏了什么?
【问题讨论】:
-
导致覆盖的是
\rs,而不是flush()——这只是确保内容不会卡在缓冲区中。因为它关注的不是关键组件,所以现在写的有点混乱。 -
哦.. 我不知道那里有
\r符号,谢谢:) 现在清楚了
标签: python jupyter-notebook flush