VS Code中Jupyter Notebook使用print与input时随机漏输出行求助
VS Code Jupyter Notebook中print()与input()混用输出延迟问题的解决办法
问题说明
在VS Code的Jupyter Notebook里同时使用print()和input()时,会出现输出内容随机延迟显示的情况:比如循环中前一次的print结果要等下一次输入完成后才会出现,甚至连续多行会积压到后续操作后才批量显示。清理VS Code缓存(路径:C:\Users\<user_name>\AppData\Roaming\Code)后问题仍存在。
复现代码
无限循环示例
i = 0 print('start') while True: i += 1 print(f'iteration {i-1}') if input(f'input {i} - stop? (y)') == 'y': break print('stop')
运行时会出现“iteration 6”在输入7后才显示、“iteration 8”在触发break的输入9后才显示的情况,无循环的代码也会出现类似延迟。
有限循环验证示例
x = 0 i = 0 print('start') while i < 9: i += 1 x = input(f'input {i}:') print(f'iteration {i} | input {x}') print('stop')
运行时“iteration 2”在输入3后才显示,“iteration 3”“iteration 4”在输入4后才显示。
可行解决办法
- 强制刷新输出缓冲区:给每个
print()添加flush=True参数,强制立即输出内容,避免缓冲区积压。修改后的代码示例:i = 0 print('start', flush=True) while True: i += 1 print(f'iteration {i-1}', flush=True) if input(f'input {i} - stop? (y)') == 'y': break print('stop', flush=True) - 切换运行终端:在VS Code的Jupyter扩展设置中,将“Run Using”选项从“Interactive Window”改为“Terminal”,通过终端执行代码可避免输出延迟。
- 更新软件版本:确保VS Code和Jupyter扩展都是最新版本,旧版本的兼容性bug可能导致该问题,更新后大概率修复。
- 更换Python环境:尝试切换到不同的Python解释器(比如conda虚拟环境),部分环境的标准输出缓冲区配置可能引发此问题。
内容的提问来源于stack exchange,提问作者jjroth89
相关产品推荐
相关产品推荐

