要想程序能长久运行,关闭程序和自启程序很重要。遇到临时断网,断电(笔记本可以抗一会),不会报错,等状态正常后,程序还能接着运行
python多线程关闭很麻烦。所以快刀斩乱麻,直接杀死线程,终止程序。
这里调用os,找到程序线程,并在cmd中杀死线程。
import os
driver.quit()#退出浏览器
cmd = 'taskkill /pid ' + str(os.getpid()) + ' -f'#杀死线程
os.system(cmd)
一般来说,断网对浏览器页面影响不大,但socket在一段时间未收到数据会自动断开。而且在子线程内重连也比较麻烦。这时就需要关闭程序,杀死线程。还有就是重启后依然没网,浏览器打不开网页,依旧需要重启。
try:#尝试接受数据
recv_data = sk_client.recv(4096)
buffer += recv_data
if recv_data.endswith(b'\x00'):
break
except:#socket断开,关闭浏览器,关闭线程。
print('重连')
driver.quit()
cmd = 'taskkill /pid ' + str(os.getpid()) + ' -f'
print(cmd)
os.system(cmd)
关于重启我的办法更简单,新建一个程序,在程序里不断打开脚本。
import os
import time
while 1:
os.system(r'"cd /d E:\python\untitled && python xiaojie改进.py"')
#如果没关闭线程,程序会一直停在这。关闭后会延时10秒重新打开。
print('again')
time.sleep(10)
启动就直接从这个脚本启动。