python实现在windows服务中新建进程的方法


Posted in Python onJune 30, 2015

本文实例讲述了python实现在windows服务中新建进程的方法。分享给大家供大家参考。具体实现方法如下:

需要安装的软件:python和pywin32,我这里装的分别是python-2.6.amd64、pywin32-217.win-amd64-py2.6

文件名:dma_ws.py

#!python
import win32serviceutil 
import win32service 
import win32event
import os 
from subprocess import Popen, PIPE
import json
import signal
run_proc = None
class DMA_WS(win32serviceutil.ServiceFramework): 
 _svc_name_ = "DMA_WS"
 _svc_display_name_ = "DMA_WS"
 def __init__(self, args): 
  win32serviceutil.ServiceFramework.__init__(self, args) 
  self.hWaitStop = win32event.CreateEvent(None, 0, 0, None) 
 def SvcStop(self):   
  self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) 
  win32event.SetEvent(self.hWaitStop) 
 def SvcDoRun(self):
  f = file('C:/DXMonitorSystem/dma.conf')
  host = json.load(f)
  f.close()
  dxsrv = os.path.join(host['app_path'], 'DXHttpServer.py')
  run_proc = Popen([host['ironpython'], dxsrv],
      stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=False,
      cwd=host['app_path'])
      #这里新建进程,注意cwd参数必不可少且要是绝对路径
  #res, err = run_proc.communicate()
  #这个函数内的上面部分都是逻辑处理的部分,可以根据自己的需求订制,但下面这行代码任何服务都需要
  win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE) 
  run_proc.kill() # 用于关闭服务所创建的子进程
  #os.kill(run_proc.pid, signal.SIGTERM)
if __name__=='__main__':
 win32serviceutil.HandleCommandLine(DMA_WS)

使用方法:

创建服务:Python dma_ws.py install

开始服务:python dma_ws.py start

停止服务:python dma_ws.py stop

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
Dec 03 Python
树莓派中python获取GY-85九轴模块信息示例
Dec 05 Python
Python  pip安装lxml出错的问题解决办法
Feb 10 Python
浅谈python socket函数中,send与sendall的区别与使用方法
May 09 Python
Python中标准库OS的常用方法总结大全
Jul 19 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
Nov 14 Python
几行Python代码爬取3000+上市公司的信息
Jan 24 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
解决pycharm安装第三方库失败的问题
May 09 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 Python
python之django路由和视图案例教程
Jul 26 Python
python实现线程池的方法
Jun 30 #Python
python实现的简单FTP上传下载文件实例
Jun 30 #Python
编写Python CGI脚本的教程
Jun 29 #Python
Python访问纯真IP数据库脚本分享
Jun 29 #Python
Python实现把数字转换成中文
Jun 29 #Python
Python中if __name__ == '__main__'作用解析
Jun 29 #Python
django接入新浪微博OAuth的方法
Jun 29 #Python
You might like
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
PHP下对字符串的递增运算代码
2010/08/21 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
你的 mixin 真的兼容 ECMAScript 5 吗?
2013/04/11 Javascript
理解js回收机制通俗易懂版
2016/02/29 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
vue按需加载实例详解
2019/09/06 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
python3.4实现邮件发送功能
2018/05/28 Python
使用 Python 实现文件递归遍历的三种方式
2018/07/18 Python
Python关于excel和shp的使用在matplotlib
2019/01/03 Python
Python Django Cookie 简单用法解析
2019/08/13 Python
python实现按首字母分类查找功能
2019/10/31 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
世界上最好的帽子:Tilley
2016/11/27 全球购物
永远是春天观后感
2015/06/12 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
幼儿园安全教育随笔
2015/08/14 职场文书
看看如何用Python绘制小米新版天价logo
2021/04/20 Python