两天前,我启动了一个 screen 会话并在其上运行了一个 python 脚本。我的 python 脚本基本上是一个网格搜索,因此我编写了代码,因为它可以打印我(或记录)所实现的不同结果和性能。
我正在远程 Linux 服务器上运行 python 和 screen,我通过 SSH 从本地计算机与其连接。
问题是,当我在屏幕会话中连接时一切正常,并且我正常收到了打印件,但是当我断开连接然后重新连接时,就无法接收打印件或日志记录。由于 GPU 已完全使用并且进程并未终止,因此代码似乎仍在运行。尽管如此,我没有从我的 python 脚本中收到任何打印或日志作为进度信号。
我发现这可能是缓冲区的问题...但我想这么长会很奇怪(考虑到我通常每 2 分钟收到 5 个日志)
使用的命令按顺序为:
ssh username@serverip
screen
python -u gridsearch.py
要重新连接,我总是使用
screen -r screensessioname
我正在通过以下方式检查 GPU:
nvidia-smi
有人可以帮助我吗?
几年前我也遇到过类似的问题,由于 Python 缓冲,我意识到了这一点。
您可以通过使用 -u 选项运行 python 脚本来禁用输出缓冲。
python -u your_script.py
或者你可以设置环境变量
PYTHONUNBUFFERED=1
让python以无缓冲模式运行。