当代码完成时(进程结束)自动发邮件(qq)

具体代码如下所示
环境linux
注意:不要起名为email.py。(因为会报错)
简单的原理,通过linux中ps命令查看有个进程号显示的内容,如果这个进程号没有任务则通过smtplib工具进行发送邮件
其中qq授权码,登录qq邮箱后,点击左上角的-设置,然后选择-账户,下面有个POP3在这里插入图片描述
把这个打开就会告诉你一个授权码

from smtplib import SMTP_SSL
from email.mime.text import MIMEText

#邮箱服务器地址,这里我们用的时qq的。要换成163的话这里需要更换。并且如果换成163的话端口号也不一样
mail_host = "smtp.qq.com"
#邮箱登录名
mail_user = '2*********@qq.com'
#密码(部分邮箱为授权码) 
mail_pass = '**********************'
#邮件发送方邮箱地址
sender = '2*********@qq.com'
#接收邮箱的地址
receivers = ['1*********@qq.com']

message = MIMEText('起床干活了','plain','utf-8')
#邮件主题       
message['Subject'] = '你代码跑完了'
#发送方信息
message['From'] = sender
#接受方信息     
message['To'] = receivers[0]
import os
import time
def autohalt():
    while True:
        ps_string_1 = os.popen('ps ax | grep 6666','r').read() # 这里的6666是进程号,后面简单说一下怎么查询
        ps_strings_1 = ps_string_1.strip().split('\n')
        # print(ps_strings)
        if len(ps_strings_1)<=2:
            message = MIMEText('你第一块卡的代码跑完了,赶紧起床','plain','utf-8')
            smtp = SMTP_SSL(mail_host)
            smtp.login(mail_user, mail_pass)
            smtp.sendmail(sender, receivers, message.as_string())
            smtp.quit()
			print('success')
            return
        else:
            # print('Still',len(ps_strings),'Processes, waiting 60s...')
            time.sleep(60) #一分钟后检查一次
if __name__=='__main__':
    autohalt()

查询进程号:
如果是跑在显卡上可以使用nvidia-smi进行查询。其中PID下面的就是进程号。
在这里插入图片描述
也可以使用ps -ef|grep python进行查询(如果不是python运行的话,可以换成别的)
查询出来的第一位是用哪个账户运行的,第二位就是进程号,第三位是父进程号。然后可以看最后运行的命令来看是不是自己运行的代码。然后根据这个把上面的6666替换就可以了。
就简单的说一下,有不懂的可以私信或者下面评论。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值