最近在服务器上跑深度学习的任务,需要时间比较久,往常的做法是通过每一轮执行的时间,来估计程序的总执行时间,然后到时间了再上去看程序执行的怎么样,但是这样带来的问题是,有时候程序执行到半路报错了,或者说程序由于资源问题或者系统io问题,执行的比较慢,到点了上去发现还没跑完,回头就忘记了。
为了解决这个问题,研究了一下,发现python用来发邮件特别的方便,只需要十几行代码就可以搞定,在执行程序的时候,后面加上这个python脚本的执行,这样的话,等程序执行完成以后,就会去执行python脚本,发邮件过来,非常的方便。
注意代码中,需要将邮箱和授权码改为自己的。
# 纯文本邮件
import smtplib
from email.mime.text import MIMEText
# 构造邮件
msg = MIMEText('您的程序已执行完毕,请及时上线检查!\n\n这是系统自动发出邮件,请不要回复。', 'plain', 'utf-8')
msg['From'] = '靓仔 <1023565220@qq.com>'
msg['To'] = '靓仔 <1023565220@qq.com>'
msg['Subject'] = '您的程序已执行完毕!'
from_addr = '1023565220@qq.com'
# 密码是授权码
password = 'xxxxxxxxxxxxxx'
to_addr = '1023565220@qq.com'
smtp_server = 'smtp.qq.com'
# QQ邮箱的SMTP服务需SSL加密,端口为465
server = smtplib.SMTP_SSL(smtp_server)
# 显示发送过程
server.set_debuglevel(1)
# 登陆验证
server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, [to_addr], msg.as_string())
# 退出
server.quit()
把文件保存到~/send_email.py
,然后将python ~/send_email.py
取一个别名,放到~/.bashrc
或者~/.zshrc
下,取决于你用的是bash还是zsh。
alias send="python ~/send_email.py"
最后,在程序执行时,另起一行,将别名输入进去就可以了。
# your code
send # send email