赞
踩
前提:
大家运行的脚本程序经常会碰到系统异常关闭、或被其他用户错杀的情况。这样就需要一个进程保护的工具。
本文结合windows 的计划任务,实现一个简单的进程保护的功能。
利用py2exe生产 exe 文件.
py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序.
创建py2exehelper.py文件 具体代码如下:
__author__ = 'Bruce_Zhou'
from distutils.core importsetupimportpy2exe
setup(console=['uniquetest.py'],)
View Code
创建 uniquetest.py 代码如下:
__author__ = 'Bruce_Zhou'
importthreadingimporttimeimporturllib2importosclassCountDownTimer(threading.Thread):def __init__(self, seconds, action):
self.runTime=seconds
self.action=action
super(CountDownTimer, self).__init__()defrun(self):
counter=self.runTimefor sec inrange(self.runTime):printcounter
time.sleep(1.0)
counter-= 1
print "Time's up"self.action()defdosomethine():print "I'm ready"t= CountDownTimer(1800, dosomethine)
t.start()if __name__ == "__main__":
t= CountDownTimer(10, dosomethine)
t.start()
View Code
将py2exehelper.py 和uniquetest.py 放在同一目录。
进入py2exehelper.py文件所在目录。
执行命令: python py2exehelper.py py2exe。
会在目录中创建两个文件夹”bulid” 和 “dist”。你可以在dist 目录中找到你需要的exe 文件。
2.利用计划任务定时检测EXE是否运行。
创建checkexe.py脚本用于检测进程是否存在,如果不存在则开启一个新的,如果存在则什么都不做。
你可以设定计划任务每隔多长时间久去执行下这个脚本,这样就可以保证EXE始终保持运行。
代码如下:
importwmiimportsubprocessimportosfrom win32com.client importDispatch
c=wmi.WMI()defcheckexe():for process inc.Win32_Process():if process.Name == "uniquetest.exe":returnTruereturnFalseif __name__ == "__main__":printcheckexe()if notcheckexe():
subprocess.Popen([r'C:\Users\Bruce_Zhou\Desktop\2exe\dist\uniquetest.exe'])
View Code
其中WMI模块获取Windows系统的硬件信息:硬盘分区、使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。