无法从Python屏幕会话接收打印/日志记录

问题描述 投票:0回答:1

两天前,我启动了一个 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 shell ssh cmd gnu-screen
1个回答
0
投票

几年前我也遇到过类似的问题,由于 Python 缓冲,我意识到了这一点。

您可以通过使用 -u 选项运行 python 脚本来禁用输出缓冲。

python -u your_script.py

或者你可以设置环境变量

PYTHONUNBUFFERED=1
让python以无缓冲模式运行。

© www.soinside.com 2019 - 2024. All rights reserved.