aistudio使用py检测深度学习是否训练完成并发送短信提示

前言

大型的网络训练起来耗时太久了,所以我一般使用百度的aistudio云训练,然后人出去玩耍,在外面也不知道啥时候训练完成了,这里写个py脚本检测训练状态并发送提示短信给自己的手机。

注册twilio

网址:传送门
注册很简单,绑定下邮箱和手机就行了。
注册完登录界面:
在这里插入图片描述
拿到图中我已经打马赛克的account sid和AUTH TOKEN即可
然后这里点开左侧添加:
在这里插入图片描述
添加这个#字一栏
在这里插入图片描述
这里面可以找到active number
在这里插入图片描述

发短息代码

pycharm里面安装下包:
在这里插入图片描述

# -*- coding: utf-8 -*-

import time
from twilio.rest import Client


auth_token = '***************'  # 去twilio.com注册账户获取token
account_sid = '****************'

client = Client(account_sid, auth_token)


def sent_message(phone_number,text):
    mes = client.messages.create(
        from_='**********',  # 填写在active number处获得的号码
        body=text,
        to=phone_number
    )
    print("OK")


for i in range(2):
    sent_message("+86*************","test")
    

在这里插入图片描述

监视代码训练情况

我考虑使用selenium控制已经打开的chrome网页。
首先在pycharm中打开终端,输入以下命令切换到谷歌浏览器目录下:

cd C:\Program Files (x86)\Google\Chrome\Application

执行命令打开谷歌浏览器并保存配置在本地,这里路径可以选择和代码同级目录:

chrome.exe --remote-debugging-port=9222 --user-data-dir="e:\py_code"

执行后会打开谷歌浏览器 ,然后自己手动的代开自己的aistudio项目即可。

完整监视代码:

# coding=utf-8

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.action_chains import ActionChains

import requests

import os

import time
from twilio.rest import Client

auth_token = '33093998261***********0959861fe8e9'  # 去twilio.com注册账户获取token
account_sid = 'ACf458f311a**********fc88e892d088193'

client = Client(account_sid, auth_token)


def sent_message(phone_number, text):
    mes = client.messages.create(
        from_='+186***13419',  # 填写在active number处获得的号码
        body=text,
        to=phone_number
    )
    print("OK")


if __name__ == '__main__':

    chrome_options = Options()
    # chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
    chrome_options.debugger_address = "127.0.0.1:9222"
    chrome_driver = "chromedriver.exe"
    driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)


    while 1:
        status = driver.find_element_by_xpath("//div[@class='n-s-status-name']").text
        print(status)
        time.sleep(2)
        if not "运行中" in status:
            sent_message("+86132****5355", "OK!")
            break
        time.sleep(5)

测试

在这里插入图片描述
在这里插入图片描述

发送邮件

上面这种方式发短信非常慢还经常失败,修改了python发邮件

# coding=utf-8

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
from twilio.rest import Client
# smtplib 用于邮件的发信动作
import smtplib
from email.mime.text import MIMEText
# email 用于构建邮件内容
from email.header import Header

auth_token = '3309399826******80959861fe8e9'  # 去twilio.com注册账户获取token
account_sid = 'ACf458f311*******d6fc88e892d088193'

client = Client(account_sid, auth_token)


def sent_message(phone_number, text):
    mes = client.messages.create(
        from_='+18644813419',  # 填写在active number处获得的号码
        body=text,
        to=phone_number
    )
    print("OK")


def send_Email(text, to_addr):
    # 用于构建邮件头

    # 发信方的信息:发信邮箱,QQ 邮箱授权码
    from_addr = '86****[email protected]'
    password = 'mkgdx******tmibdee' # qq邮箱授权码

    # 收信方邮箱
    # to_addr = '86****[email protected]'

    # 发信服务器
    smtp_server = 'smtp.qq.com'

    # 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
    msg = MIMEText(text, 'plain', 'utf-8')

    # 邮件头信息
    msg['From'] = Header(from_addr)
    msg['To'] = Header(to_addr)
    msg['Subject'] = Header('在线训练结果')

    # 开启发信服务,这里使用的是加密传输
    server = smtplib.SMTP_SSL(smtp_server)
    server.connect(smtp_server, 465)
    # 登录发信邮箱
    server.login(from_addr, password)
    # 发送邮件
    server.sendmail(from_addr, to_addr, msg.as_string())
    # 关闭服务器
    server.quit()


if __name__ == '__main__':

    chrome_options = Options()
    # chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
    chrome_options.debugger_address = "127.0.0.1:9222"
    chrome_driver = "chromedriver.exe"
    driver = webdriver.Chrome(chrome_driver, chrome_options=chrome_options)


    while 1:
        status = driver.find_element_by_xpath("//div[@class='n-s-status-name']").text
        print(status)
        time.sleep(2)
        if not "运行中" in status:
            #sent_message("+861326*****55", "OK!") # 文本不要过长不然发送失败,不支持中文
            send_Email("训练完成", "863*****[email protected]")
            break
        time.sleep(5)

在这里插入图片描述

总结

这个twilio不太好用又是外网登陆起来贼慢需要科学上网,然后发短信进场失败… …下次研究个别的方法。

猜你喜欢

转载自blog.csdn.net/qq_37668436/article/details/106499839