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

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

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

  文件名:dma_ws.py

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

#!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程序设计有所帮助。

时间: 2024-09-13 21:44:26

python实现在windows服务中新建进程的方法的相关文章

C语言实现在windows服务中新建进程的方法_C 语言

本文实例讲述了C语言实现在windows服务中新建进程的方法.分享给大家供大家参考.具体如下: 运行环境:visual stdio 2008 文件名:testService.c #include <windows.h> #include <stdio.h> #include <time.h> #include <tchar.h> HANDLE hMutex; SERVICE_STATUS ServiceStatus; SERVICE_STATUS_HANDL

python实现在windows下操作word的方法

  本文实例讲述了python实现在windows下操作word的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 import win32com from win32com.client import Dispatch, constants w =

Win8.1系统卸载Windows服务节省磁盘资源的方法

  Win8.1系统卸载Windows服务节省磁盘资源的方法          具体方法如下: 1.点击开始菜单--打开控制面板; 2.切换到大图标; 3.点击管理工具; 4.打开服务; 5.找到一个需要卸载的服务.双击打开;

Python实现对PPT文件进行截图操作的方法

  本文实例讲述了Python实现对PPT文件进行截图操作的方法.分享给大家供大家参考.具体分析如下: 下面的代码可以为powerpoint文件ppt进行截图,可以指定要截取的幻灯片页面,需要本机安装了powerpoint,可以指定截图的大小分辨率 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import os import comtypes.client def export_presentation(path_to_ppt, path_to_folder):

Windows 7 中放大镜的使用方法和快捷键

Windows 7 中放大镜的使用方法和快捷键 Windows7下自带了一款放大镜软件,可以很好的帮助视力不太好的朋友或者老人,今天我们深入了解一下Win7的放大镜使用. 打开放大镜的方法是同时按下键盘上的Windows徽标键+加号,打开之后移动鼠标即可浏览不同区域的放大. 如下图所示: 还有很多其中可以进行设置的快捷键,下面的图中都有介绍哦 方便部分代码的放大查看功能.

asp.net基于windows服务实现定时发送邮件的方法_实用技巧

本文实例讲述了asp.net基于windows服务实现定时发送邮件的方法.分享给大家供大家参考,具体如下: //定义组件 private System.Timers.Timer time; public int nowhour; public int minutes; public string sendTime; public Thread th; public string isOpen;//是否启用定时发送 public string strToEUser; public static i

vista和win7在windows服务中交互桌面权限问题解决方法:穿透Session 0 隔离_C#教程

Windows 服务在后台执行着各种各样任务,支持着我们日常的桌面操作.有时候可能需要服务与用户进行信息或界面交互操作,这种方式在XP 时代是没有问题的,但自从Vista 开始你会发现这种方式似乎已不起作用. Session 0 隔离实验 下面来做一个名叫AlertService 的服务,它的作用就是向用户发出一个提示对话框,我们看看这个服务在Windows 7 中会发生什么情况. using System.ServiceProcess; using System.Windows.Forms;

Windows系统中的文件搜索方法与技巧

window|技巧 随着电脑硬盘价格的下降和人们经济水平的提升,许多朋友都拥有大容量的硬盘,由此里面存放的文件就越来越多,这让电脑成为一个知识库,许多文件都可以从里面找到.但是这也带来一个问题,当我们要寻找以前看过的某个文件时,如果记不清楚它的位置了找起来会很麻烦,这个时候,采用适当的搜索办法来提高搜索效率是必不可少的.在windows系统中自带了一个搜索功能,真正利用好这个功能对我们的搜索功能有很大的帮助. 充分使用搜索选项 当我们查找一个文件搜索过程结束之后,如果搜索的结果非常多,这个时候就

Windows系统中一个进程可以允许最大的线程数

默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小. 你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程. 如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程. 即使物理内存再大,一个进程中可以起的线程总要受到2GB这个内存空间的限制. 比方说你的机器装了64GB物理内存,但每个进程的内存空间还是4GB,其中用户态可用