1、定向存储问题
当我们在调程序尤其是在训练神经网络观察其参数的变化时,我们通常喜欢将输出结果存储到线下的文件中,意为打log,但是存储数据又分为存储输入、错误输出以及正常输出3类。
&1为文件描述符1,并不是我们时常认为的命名为1的文件,切记这个要区分开,2>&1是将输出错误结果与正确结果进行合并,一起保存在文件中,其中0表示键盘输入、1表示屏幕输出、2表示错误输出。2>&1把标准输出与错误输出进行合并;
command > outfile 即是将command的输出重定向到outfile文件中,即输出不打印在屏幕中,直接输出到outfile中。
2>被定义为错误重定向,而2>1则是错误输出被定向到一个文件1中,而不是将错误输出定向成标准输出。2>&1被定义为重定向为标准输出;
在使用命令处理结果时,我们通常把2>&1写在后面,是因为首先要把输出定向到某个文件中,然后2>&1代表着将错误输出定义为标准输出,最后将错误输出与标准输出一起定向到某个文件中。
对于 command 2>&1 >file来讲,首先将错误输出定义为标准输出,但是,此时输出还是在终端,>file输出才会被从新定向到文件中,但是标准错误仍然在终端。这个有一个先后顺序的表达过程。
2、nohup
在我们测试程序的时候经常要使用后台运行这样,当我们关闭终端时,不会停止程序。因此,我们常用的命令为:
nohup python run.py >> out.log 2>&1 & >>代表着不删除out.log,接着在out.log后面输出,最后的&表示为后台运行
3、记录时间
目前由于遇到一个问题,就是我要启动程序,但是需要在某个时间段启动程序,并在这个时间段结束后关闭程序,因此我需要准确的时间:hour、minute,second,因此我们使用python里面的datetime这个库函数
datetime | 日期时间对象,常用的属性:hour、minute、year、day等 |
date | 日期对象,常用属性:year、month、day |
time | 时间对象,常用属性:hour、second、minute |
datetime | 日期时间对象,常用的属性:hour、minute、year、day等 |
timedelta | 时间间隔对象,即两个时间点之间的长度 |
tzinfo | 时区信息对象 |
python中的datetime与time类的侧重点不同,time更加倾向于时间戳,即时区时间