sys.stdout.flush 在 jupyter notebook 中不起作用
sys.stdout.flush not work in jupyter notebook
所以我只想重新运行 来自这个 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() 创建一个简单的 "progress" 输出。你可以看到他的回购的输出它只显示最后一集迭代 10000/10000
因为使用 sys.stdout.flush()
但是当我尝试在我的 jupyter notebook 中 运行 它时(我 运行 使用 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 让它工作时,我是否遗漏了什么?
Charless Duffy 的评论说明了一切。覆盖问题不在打印函数中的flush函数buat上。
我发现解决方案只是从以下位置编辑打印格式:
print("\rEpisode {}/{}.".format(i_episode, num_episodes))
至
print("\rEpisode {}/{}.".format(i_episode, num_episodes), end="")
并且覆盖现在有效
Python 打印没有换行符的列表的程序
声明一个列表
import time
listfruits = ['Apple', 'Banana', 'Orange', 'Mango']
使用 for 循环打印列表
for fruit in listfruits:
print('\r'+fruit, end=' ')
time.sleep(3)
所以我只想重新运行 来自这个 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() 创建一个简单的 "progress" 输出。你可以看到他的回购的输出它只显示最后一集迭代 10000/10000
因为使用 sys.stdout.flush()
但是当我尝试在我的 jupyter notebook 中 运行 它时(我 运行 使用 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 让它工作时,我是否遗漏了什么?
Charless Duffy 的评论说明了一切。覆盖问题不在打印函数中的flush函数buat上。
我发现解决方案只是从以下位置编辑打印格式:
print("\rEpisode {}/{}.".format(i_episode, num_episodes))
至
print("\rEpisode {}/{}.".format(i_episode, num_episodes), end="")
并且覆盖现在有效
Python 打印没有换行符的列表的程序
声明一个列表
import time
listfruits = ['Apple', 'Banana', 'Orange', 'Mango']
使用 for 循环打印列表
for fruit in listfruits:
print('\r'+fruit, end=' ')
time.sleep(3)