为了账号安全,请及时绑定邮箱和手机立即绑定

SLURM 批处理脚本不执行 Python 脚本,不返回错误消息并且不停止运行

SLURM 批处理脚本不执行 Python 脚本,不返回错误消息并且不停止运行

青春有我 2023-05-23 14:59:31
在 SLURM 集群中,我提交了一个调用 python 脚本的 shell 脚本(这两个脚本都可以在下面找到。当 shell 脚本执行时,它会到达调用 python 脚本的位置,但随后什么也没有发生:没有输出,没有错误消息SLURM 作业继续运行。我假设 python 脚本的全部内容都不相关(但我还是将其包括在内以完成)。出于调试目的,我print("script started")在最开始插入了该行以查看它是否运行但没有运行。我在输出中看到的最后一件事是moved to directory.我尝试在此之前调用test.py包含的脚本print("test")并且它正常执行。python 脚本无法启动的原因可能是什么,我该如何解决?编辑:由于用户 jakub 建议更改print("script started")为print("script started", flush=True)成功打印。包括更多这样的语句表明脚本实际上运行得很好,只是没有输出任何东西。在不断执行的 for 循环中包含相同的语句也会使print()之前丢失的所有语句都被打印出来。那么问题就变成了:为什么print()这里的语句需要在这个脚本中有flush=True,而在其他脚本中不需要呢?
查看完整描述

1 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

Python 默认缓冲 stdin、stdout 和 stderr。print()默认情况下写入stdout,因此您将看到这种缓冲行为。

Python 以缓冲模式打开 stdin、-out 和 -error 流;它将读取或写入更大的块,将数据保存在内存中,直到达到阈值。

您可以通过传递flush=True给强行刷新此缓冲区printprint如果连续有多个语句,则只需flush=True在最后一个语句中使用。


查看完整回答
反对 回复 2023-05-23
  • 1 回答
  • 0 关注
  • 257 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信