如何在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

网上找的


# SmallestService.py
#
# 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程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在Windows下编译OpenSSL

如何在 Windows 下编译 OpenSSL

c语言问题,在源文件下编写了两个cpp文件,只能运行其中的一个,另外一个怎么运行呢?

如何在 Windows 下编译 OpenSSL

如何在 Windows 下编译 OpenSSL

如何在Windows下编写基于Posix标准的多线程程序