鱼C论坛

 找回密码
 立即注册
查看: 3490|回复: 9

[已解决]如何使python程序在后台执行?

[复制链接]
发表于 2023-2-8 17:58:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

最佳答案
2023-2-8 18:33:11
看你是linux还是windows系统,如果是 windows 系统你可以了解一下怎么把 windwos 程序变成服务

windows制作服务

linux 就很简单了,可以通过 systemd 设成守护进程,也可以用 nohup 或 screen 来执行,这些网上都很容易搜得到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-8 18:33:11 | 显示全部楼层    本楼为最佳答案   
看你是linux还是windows系统,如果是 windows 系统你可以了解一下怎么把 windwos 程序变成服务

windows制作服务

linux 就很简单了,可以通过 systemd 设成守护进程,也可以用 nohup 或 screen 来执行,这些网上都很容易搜得到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 0 反对 1

使用道具 举报

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

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

评分

参与人数 2荣誉 +3 鱼币 +4 贡献 +3 收起 理由
不二如是 + 2 + 3 + 3 鱼C有你更精彩^_^
歌者文明清理员 + 1 + 1 虽然看不懂,可是我的代码确实很低级

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-2-8 20:05:25 | 显示全部楼层
isdkz 发表于 2023-2-8 18:33
看你是linux还是windows系统,如果是 windows 系统你可以了解一下怎么把 windwos 程序变成服务

windows ...

还有这种操作吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-8 21:52:32 | 显示全部楼层

对滴
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-9 08:28:03 | 显示全部楼层

我一般是这样的
pythonw test.py
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-9 09:55:45 | 显示全部楼层

这种方式在关闭终端或者CMD后就停止执行了,需要一个能在关闭终端或者CMD后能继续运行的方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

定时程序可以使用schedule模块实现,不需要使用死循环。我的问题是要把程序放在后台执行,因为我们执行py程序时都是在终端或者CMD,窗口一关程序就停了,我需要的就是在窗口关闭后依然在执行。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-9 10:01:39 | 显示全部楼层
isdkz 发表于 2023-2-8 18:33
看你是linux还是windows系统,如果是 windows 系统你可以了解一下怎么把 windwos 程序变成服务

windows ...

好的,我先研究下,多谢多谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 17:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表