前提:

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

  本文结合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. 为什么在ucos向stm32f103移植时说os_cpu_c.c中有三个函数如OS_CPU_SysTickInit()需要注释掉

    我在看os_cpu_c.c代码时对下面这段话困惑了半天总是在百度的帮助下找到了答案 /*  申明几个函数,这里要注意最后三个函数需要注释掉,为什么呢?    OS_CPU_SysTickHandler ...

  2. CentOS 下 sftp 有人能连有人不能连 程序设定了禁用IP

    问题现象: 局域网的一台Linux上运行有sftp Server. 大家用FileZilia 连接,有两个人能够连接,有两个人不能连接. 解决问题: 1.先查看服务器上的sftp server是哪一个 ...

  3. Bugtags 2016-10-17 更新内容

    远程配置功能上线 功能介绍 远程配置可以实现在不发布应用更新的情况下更改应用的行为和外观.举个例子,产品在某个功能正式发布前,可能会采取小流量测试的方式,控制该功能只有某些特定用户可见,那么就可以使用 ...

  4. FastDFS文件系统(二) fastdfs和其他文件系统区别

    FastDFS文件系统(二) fastdfs和其他文件系统区别 一.概述 普通存储方案:Rsync.DAS(IDE/SATA/SAS/SCSI等块).NAS(NFS.CIFS.SAMBA等文件系统). ...

  5. selenium 关于富文本的处理

    http://www.cnblogs.com/xiaobaichuangtianxia/p/5889999.html

  6. EASYUI 表单(FORM)用法

    提交表单 $('#addform').form('submit', { url: '/Admin/AdminUser/AddAdminUser', onSubmit: function () { re ...

  7. C#:String.Format数字格式化输出 {0:N2} {0:D2} {0:C2}等等

    int a = 12345678; //格式为sring输出//   Label1.Text = string.Format("asdfadsf{0}adsfasdf",a); / ...

  8. [转]CAP原理与最终一致性 强一致性 透析

    在足球比赛里,一个球员在一场比赛中进三个球,称之为帽子戏法(Hat-trick).在分布式数据系统中,也有一个帽子原理(CAP Theorem),不过此帽子非彼帽子.CAP原理中,有三个要素: 一致性 ...

  9. 01-C#入门(分支控制语句)

    说实话,<C#入门经典>这本书对入门的同学来说真的太棒了,先不说内容如何,就作者先以控制台(命令行)调试程序的方法,就能够最大限度地让你关注学习的内容,而不是花哨的界面调试. 现在学习是下 ...

  10. 【转】Hibernate级联注解CascadeType参数详解

    cascade(级联) 级联在编写触发器时经常用到,触发器的作用是当 主控表信息改变时,用来保证其关联表中数据同步更新.若对触发器来修改或删除关联表相记录,必须要删除对应的关联表信息,否则,会存有脏数 ...