出现原因:Python 的输出存在缓冲机制,因此不能实时输出结果至 nohup.out
解决方法:使用 python -u 设置为不使用缓存机制
nohup python -u 你正常使用时的命令 > nohup.out 2>&1 &
举个栗子:
我原本启动训练的命令是:
CUDA_VISIBLE_DEVICES=2 python core/train.py --config configs/celeba-hq_256.yaml --gpus 0
则现在改为:
CUDA_VISIBLE_DEVICES=2 nohup python -u core/train.py --config configs/celeba-hq_256.yaml --gpus 0 > nohup.out 2>&1 &
文章讲述了Python的输出由于存在缓冲机制,在使用nohup命令时可能无法实时记录到nohup.out文件中。为了解决这个问题,可以使用`python-u`选项禁用输出缓冲。举例说明,如果原先的训练命令是`CUDA_VISIBLE_DEVICES=2pythoncore/train.py--configconfigs/celeba-hq_256.yaml--gpus0`,那么应改为`CUDA_VISIBLE_DEVICES=2nohuppython-ucore/train.py--configconfigs/celeba-hq_256.yaml--gpus0>nohup.out2>&1&`,这样可以确保在后台运行时无缓冲地将输出重定向到nohup.out文件。
3272





