python4.1 发表于 2023-2-8 17:58:34

如何使python程序在后台执行?

如题,有时候一些运维定时脚本需要长期在后台执行,如何做到?查了一些资料,daemoniker模块可以实现,但是不是很能看懂示例代码,求大佬详细讲解下。
帖子发不了链接,daemoniker在github有项目

isdkz 发表于 2023-2-8 18:33:11

看你是linux还是windows系统,如果是 windows 系统你可以了解一下怎么把 windwos 程序变成服务

windows制作服务

linux 就很简单了,可以通过 systemd 设成守护进程,也可以用 nohup 或 screen 来执行,这些网上都很容易搜得到

歌者文明清理员 发表于 2023-2-8 19:23:50

本帖最后由 歌者文明清理员 于 2023-2-8 19:25 编辑

你的需求是不是闹钟,可以在后台响(或者output)的那种
我这程序是死循环
你可以双while True,如果时间超出就执行一些功能并退出内whiletrue,timesleep一会儿,然后外循环无限运行
# 这样
from datetime import datetime as d, time as t
from time import sleep
time = t(13, 0, 0) # 下午一点
while True:
    while True:
      if d.now().time() >= time:
            print("你要print啥写这里,或者pygame播放闹钟音效也行")
            break # 不能忘记
      sleep(0.1)

dolly_yos2 发表于 2023-2-8 19:38:52

歌者文明清理员 发表于 2023-2-8 19:23
你的需求是不是闹钟,可以在后台响(或者output)的那种
我这程序是死循环
你可以双while True,如果时间 ...

首先这种睡眠忙等的方式在常见情况下就是下下策,白白消耗资源不干活
再考虑这种“各自为政”的方式,每天只运行一次却要保持一个进程始终驻留,如果有很多定时任务难道要每个任务各自启动一个这样的进程处理?
2 楼的方案是很好的实践,如果是守护进程就注册成 systemd service,启停依赖日志输出自动重启等等让 systemd 处理妥当;如果是定时任务(在特定时间运行一段代码即可,无需一直运行)可以用 systemd timer,让 systemd 定时执行你的程序,省下很多不必要的开销,而且所有的定时任务可以在一处管理

liuhongrun2022 发表于 2023-2-8 20:05:25

isdkz 发表于 2023-2-8 18:33
看你是linux还是windows系统,如果是 windows 系统你可以了解一下怎么把 windwos 程序变成服务

windows ...

还有这种操作吗?

isdkz 发表于 2023-2-8 21:52:32

liuhongrun2022 发表于 2023-2-8 20:05
还有这种操作吗?

对滴{:10_327:}

liuhongrun2022 发表于 2023-2-9 08:28:03

isdkz 发表于 2023-2-8 21:52
对滴

我一般是这样的
pythonw test.py

python4.1 发表于 2023-2-9 09:55:45

liuhongrun2022 发表于 2023-2-9 08:28
我一般是这样的

这种方式在关闭终端或者CMD后就停止执行了,需要一个能在关闭终端或者CMD后能继续运行的方法

python4.1 发表于 2023-2-9 10:00:48

歌者文明清理员 发表于 2023-2-8 19:23
你的需求是不是闹钟,可以在后台响(或者output)的那种
我这程序是死循环
你可以双while True,如果时间 ...

定时程序可以使用schedule模块实现,不需要使用死循环。我的问题是要把程序放在后台执行,因为我们执行py程序时都是在终端或者CMD,窗口一关程序就停了,我需要的就是在窗口关闭后依然在执行。

python4.1 发表于 2023-2-9 10:01:39

isdkz 发表于 2023-2-8 18:33
看你是linux还是windows系统,如果是 windows 系统你可以了解一下怎么把 windwos 程序变成服务

windows ...

好的,我先研究下,多谢多谢!{:10_298:}
页: [1]
查看完整版本: 如何使python程序在后台执行?