前提:

  大家运行的脚本程序经常会碰到系统异常关闭、或被其他用户错杀的情况。这样就需要一个进程保护的工具。

  本文结合windows 的计划任务,实现一个简单的进程保护的功能。

  1. 利用py2exe生产 exe 文件.

    py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序.

    下载地址:从http://prdownloads.sourceforge.net/py2exe

创建py2exehelper.py文件 具体代码如下:

__author__ = 'Bruce_Zhou'
from distutils.core import setup
import py2exe
setup(console=['uniquetest.py'],)

创建 uniquetest.py 代码如下:

__author__ = 'Bruce_Zhou'

import threading
import time
import urllib2
import os class CountDownTimer(threading.Thread):
def __init__(self, seconds, action):
self.runTime = seconds
self.action = action
super(CountDownTimer, self).__init__() def run(self):
counter = self.runTime
for sec in range(self.runTime):
print counter
time.sleep(1.0)
counter -= 1
print " Time's up"
self.action() def dosomethine():
print "I'm ready"
t = CountDownTimer(1800, dosomethine)
t.start() if __name__ == "__main__": t = CountDownTimer(10, dosomethine)
t.start()

       将py2exehelper.py 和uniquetest.py 放在同一目录。

       进入py2exehelper.py文件所在目录。

       执行命令: python py2exehelper.py py2exe。

       会在目录中创建两个文件夹”bulid” 和 “dist”。你可以在dist 目录中找到你需要的exe 文件。

2.利用计划任务定时检测EXE是否运行。

创建checkexe.py脚本用于检测进程是否存在,如果不存在则开启一个新的,如果存在则什么都不做。

你可以设定计划任务每隔多长时间久去执行下这个脚本,这样就可以保证EXE始终保持运行。

      代码如下:

import wmi
import subprocess
import os
from win32com.client import Dispatch
c = wmi.WMI() def checkexe():
for process in c.Win32_Process():
if process.Name == "uniquetest.exe":
return True
return False if __name__ == "__main__":
print checkexe()
if not checkexe():
subprocess.Popen([r'C:\Users\Bruce_Zhou\Desktop\2exe\dist\uniquetest.exe'])

   其中WMI模块获取Windows系统的硬件信息:硬盘分区、使用情况,内存大小,CPU型号,当前运行的进程,自启动程序及位置,系统的版本等信息。

     下载地址:https://pypi.python.org/pypi/WMI/

Windows 下针对python脚本做一个简单的进程保护的更多相关文章

  1. 利用python+tkinter做一个简单的智能电视遥控器

    要通过python实现遥控器功能分两步: 第一步:开发图形化界面,以暴风TV的遥控器按钮为例 第二步:使PC端给电视发送相应指令(此步骤需要打开电视的adb开关) 现在就开始第一步操作实现遥控器功能, ...

  2. 【Python】 做一个简单的 http server

    # coding=utf-8 ''' Created on 2014年6月15日 @author: Yang ''' import socket import datetime # 初始化socket ...

  3. 如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell(command line模式和GUI模式)+如何使用Python IDE

    http://www.crifan.com/how_to_do_python_development_under_windows_environment/ 本文目的 希望对于,如何在Windows下, ...

  4. Windows Phone开发(21):做一个简单的绘图板

    原文:Windows Phone开发(21):做一个简单的绘图板 其实我们今天要说的就是一个控件--InkPresenter,这个控件并不是十分强大,没办法和WPF中的InkCanvas相比,估计在实 ...

  5. gcc和MinGW的异同(在cygwin/gcc做的东西可以无缝的用在linux下,没有任何问题,是在windows下开发linux程序的一个很好的选择)

    cygwin/gcc和MinGW都是gcc在windows下的编译环境,但是它们有什么区别,在实际工作中如何选择这两种编译器. cygwin/gcc完全可以和在linux下的gcc化做等号,这个可以从 ...

  6. Windows下的python虚拟环境设置

    Windows下的python虚拟环境设置: virtualenv 在python开发中,我们可能会遇到一种情况:就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲 ...

  7. 使用Multiplayer Networking做一个简单的多人游戏例子-1/3(Unity3D开发之二十五)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51006463 ...

  8. Windows下安装Python虚拟环境

    Windows下安装Python虚拟环境 虚拟环境安装 需求概要 "虚拟环境"是从电脑独立开辟出来的环境.就好比我们生活中的橱柜中,会把酱油放在一个瓶子里,把醋放在另外一个瓶子里, ...

  9. linux和windows下安装python拓展包及requirement.txt安装类库

    python拓展包安装 直接安装拓展包默认路径: Unix(Linux)默认路径:/usr/local/lib/pythonX.Y/site-packagesWindows默认路径:C:\Python ...

随机推荐

  1. 用HTML实现凸(凹)起的立体效果的表格

    视觉效果如下: 实现这个效果主要用到的是<table>标签的bordercolorlight和bordercolordark两个属性.不过在测试的过程中,我发现有的浏览器不支持这两个属性, ...

  2. 洛谷 P3366 【模板】最小生成树 prim算法思路 我自己的实现

    网上有很多prim算法  用邻接矩阵 加什么lowcost数组 我觉得不靠谱 毕竟邻接矩阵本身就不是存图的好方法 所以自己写了一个邻接表(边信息表)版本的  注意我还是用了优先队列  每次新加入一个点 ...

  3. Java数组在内存中是如何存放的

    阅读目录 一维数组 二维数组 数组对象及其引用存放在内存中的哪里? Java中有两种类型的数组: 基本数据类型数组: 对象数组: 当一个对象使用关键字“new”创建时,会在堆上分配内存空间,然后返回对 ...

  4. Window服务安装方式汇总

    一.制作bat文件 1)Install.bat: @echo 安装服务 %SystemRoot%\Microsoft.NET\Framework\v2.0.50727\installutil AppS ...

  5. git bash下对文件的操作

    window下的e盘中webpack文件夹操作 新建文件夹:mkdir wpdemo: 新建文件:touch index.html; 删除文件夹:rm -r wpdemo; 删除文件:rm index ...

  6. 对话框AlertDialog.Builder使用方法

    我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等 ...

  7. CRM 2016 自定义对话框

    项目背景: CRM表单在操作时会有一些提示,或者交互的对话框. 直接 使用js的alert 和  confirm,网格上有些不协调. 以前在项目中使用过jquery 的,但是CRM官方不建议使用jqu ...

  8. sql2008r 收缩数据库日志log文件;删除errorlog文件的方法

    1.清空log文件,以减少数据库文件log所占的空间 USE dbname1 ; GO ALTER DATABASE dbname1 SET RECOVERY SIMPLE;--设置简单恢复模式 GO ...

  9. 关于一次oracle sqlplus可登陆,但监听起不来的解决。由于listener.log文件超过4G

    1.在oracle服务器上cmd 执行 lsnrctl 执行start 过了好久,提示监听程序已经启动. 再执行status 过来好久,才提示命令执行成功. 最后找到原因是因为C:\Oracle\di ...

  10. cvs update后输出的文件标志 和 update常用的几个参数

    (1)update 和 checkout 在执行中,会为每个文件打印一行提示信息,文件的状态通过前面的单个字符指明:       U file        文件按要求从仓库得到更新.用在那些仓库里面 ...