在终端中要执行模型的训练时,我们有时候既需要把模型执行的日志输出到终端展示,又想把训练日志保存到日志文件中:
假设执行的代码时trian.py
python -u train.py | tee -a ./train.log
-u
:这是 Python 解释器的一个选项,用于强制标准输出和标准错误流是无缓冲的。在这种模式下,输出会直接写入到它的目标,不会在内存中积累。这通常用于确保实时输出,尤其是当 Python 脚本的输出被重定向时,比如通过管道操作。
|
:这是 Unix 管道符号,它的作用是将前一个命令的标准输出作为下一个命令的标准输入。
tee
:这是一个 Unix 命令,用于读取标准输入并将其内容写入到标准输出和一个或多个文件。这使得您可以查看数据的同时也将其保存下来。
-a
:这是 tee 命令的一个选项,意味着追加。当使用这个选项时,tee 会将标准输入追加到文件里,而不是覆盖文件内容。
综合起来,python -u train.py | tee -a ./train.log
这个命令会运行 train.py 脚本,以无缓冲的方式直接输出结果。输出不仅会显示在终端上,还会被追加到当前目录下的 train.log 文件中。这意味着您可以即时地在终端看到输出,并且所有的输出都会被记录在 train.log 文件中,即使您关闭了终端窗口。