如何在Windows下编写在后台一直运行的Python程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Windows下编写在后台一直运行的Python程序相关的知识,希望对你有一定的参考价值。
使用python自带的GUI就可以实现,python自带TK,使用tk的mainloop就会让python程序一直运行,只要让GUI窗口一直不显示就是一直在后动员运行了。
代码示意如下:
from tkinter import *
root = Tk()
root.withdraw() # 隐藏窗口
root.mainloop() # 消息循环
把代码以pyw扩展名保存,执行一下,就会让程序一直在后台执行,可以通过任务管理器结束,如下:
参考技术A网上找的
#
# A sample demonstrating the smallest possible service written in Python.
import win32serviceutil
import win32service
import win32event
import time
class SmallestPythonService(win32serviceutil.ServiceFramework):
_svc_name_ = "SmallestPythonService"
_svc_display_name_ = "The smallest possible Python Service"
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
# Create an event which we will use to wait on.
# The "service stop" request will set this event.
self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
def SvcStop(self):
# Before we do anything, tell the SCM we are starting the stop process.
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
# And set my event.
win32event.SetEvent(self.hWaitStop)
def SvcDoRun(self):
#what to do#
while True:
f= open('c:/a.log','a')
f.write('asdf\\n')
f.close()
time.sleep(5)
win32event.WaitForSingleObject(self.hWaitStop, win32event.INFINITE)
if __name__=='__main__':
win32serviceutil.HandleCommandLine(SmallestPythonService)
在SvcDoRun里写上你想做的事情。保存为server.py
python server.py install
这样就安装了一个server服务,当然你要有管理员权限才可以。然后就可以到windows的服务里看到这个SmallestPythonService服务,可以启动,停止,甚至开机启动。这就是标准的后台运行了。
如何在Windows下编写基于Posix标准的多线程程序
参考技术A 在Windows下编写基于Posix标准的多线程程序的方法:1、进入pthread-win32开源库官网,单击pthread-win32-2-9-1-release.zip进行下载
2、下载后的文件解压缩后,进行二次开发只需要里面的Pre-built.2文件夹里面的内容
Pre-built.2文件夹下面有:dll(程序运行时需要的动态运行时库),
include(程序编写时利用的头文件),
lib(程序连接过程中需要的静态库)
3、建立code
blocks下的C工程,工程结构,包括main.c测试代码
codeblocks的工程配置,右键工程名选择build
options,配置linker
settings,与search
direction里面的compiler选项
编写main.c,代码如下:
#include
"pthread.h"#include
<stdio.h>void*
func(void
*
Parame)
printf("I
am
Child
Thread\n");
return
NULL;int
main()
printf("Pthread
Test
Begin\n");
pthread_t
pid;
pthread_attr_t
attr;
pthread_attr_init(&attr);
pthread_attr_setscope(&attr,
PTHREAD_SCOPE_PROCESS);
pthread_attr_setdetachstate(&attr,
PTHREAD_CREATE_DETACHED);
pthread_create(&pid,
&attr,
func,
NULL);
getchar();
pthread_attr_destroy(&attr);
return
0;
在生成的exe文件所在同级目录下应该自己添加前文所说的dll文件,否则无法运行。
以上是关于如何在Windows下编写在后台一直运行的Python程序的主要内容,如果未能解决你的问题,请参考以下文章