通过以下命令后台运行程序
nohup python test.py &
生成了nohup.out文件,输入
tail -f nohup.out
打开nohup.out文件一直不显示内容且不更新,不是说好了可以持续的查看nohup.out的输出,达到监视程序的效果吗?
研究了解到Python的print输出默认写入stdout缓冲,总量达到4k后才会全部打印出来。Pycharm中屏蔽了这种缓冲,所以在Pycharm中调试时并不会发现这样的问题。
解决方案:使用-u 参数,python不启用缓冲,就可以立刻获取输出了。
nohup python -u test.py &
解决方案二:
听说在某些情况下即使使用了-u参数也无效,在print函数中增加flush=True:
print(‘right’, flush=True)
要改的地方太多,没试过
本文探讨了在使用nohup命令后台运行Python程序时,nohup.out文件输出延迟的问题。通常,Python的print输出会进行缓冲,达到一定量后才刷新。在Pycharm中,这种缓冲被屏蔽,但在终端环境下需要手动解决。文章提供了两种解决方案:一是使用-u参数禁用缓冲;二是修改print函数,增加flush=True参数。
6844

被折叠的 条评论
为什么被折叠?



