【Python程序开发系列】如何让python脚本一直在后台保持运行

liftword4个月前 (01-21)技术文章36

这是我的第385篇原创文章。

一、引言

让 Python 脚本在后台持续运行,有几种常见的方式,具体方式可以根据你的系统环境和需求选择。

二、Linux 或 macOS 系统

2.1 使用 nohup命令

nohup(no hang up)命令可以让进程在后台运行,即使用户退出终端会话,该进程也会继续运行。

nohup python your_script.py &

nohup:命令会使得脚本在后台运行,并且输出会被重定向到 nohup.out文件。&:符号使得进程在后台运行。

如果你希望将输出重定向到特定文件,可以这样做:

nohup python your_script.py > output.log 2>&1 &

> output.log:将标准输出重定向到 output.log 文件。

2>&1:将标准错误输出(stderr)重定向到标准输出(stdout)。

2.2 使用 screen或 tmux工具

screen 和 tmux 是常见的终端复用工具,可以让你在后台运行多个会话,并且可以随时断开和重新连接。

启动一个新的 screen 会话:

screen -S my_session

运行你的 Python 脚本:

python your_script.py

按 Ctrl + A 然后按 D 来将会话放到后台。对于 tmux,操作类似。

2.3 使用 systemd服务(适用于 Linux 系统)

如果你需要将 Python 脚本作为系统服务运行,可以使用 systemd 服务来管理。创建一个新的 systemd 服务文件,例如 /etc/systemd/system/myscript.service:

sudo nano /etc/systemd/system/myscript.service
在文件中加入以下内容:[Unit]

Description=My Python Script

[Service]

ExecStart=/usr/bin/python3 /path/to/your_script.py

WorkingDirectory=/path/to/your/script

Restart=always

User=your_user

Group=your_group

StandardOutput=file:/path/to/log/output.log

StandardError=file:/path/to/log/error.log

[Install]

WantedBy=multi-user.target
重新加载 systemd 服务并启用它:sudo systemctl daemon-reload

sudo systemctl enable myscript.service

sudo systemctl start myscript.service
查看日志:sudo journalctl -u myscript.service

三、Windows 系统

3.1 使用 pythonw.exe

在 Windows 上,可以使用 pythonw.exe 来运行 Python 脚本。pythonw.exe 是一个没有命令行窗口的 Python 解释器,适用于后台运行脚本。

使用 pythonw.exe 来启动脚本:

pythonw your_script.py

3.2 使用任务计划程序(Task Scheduler)

Windows 提供了任务计划程序(Task Scheduler)来管理后台任务。

  1. 打开“任务计划程序”(Task Scheduler)。
  2. 选择“创建任务”(Create Task)。
  3. 在“常规”选项卡下,设置任务的名称和描述。
  4. 在“触发器”选项卡下,设置任务触发的条件(例如,系统启动时或指定时间)。
  5. 在“操作”选项卡中,选择“启动程序”,并选择 Python 可执行文件以及你的脚本。
  6. 点击“确定”,即可后台运行 Python 脚本。

3.3 使用 pyinstaller打包成可执行文件

如果你希望 Python 脚本在没有命令行界面的情况下运行,并且能够方便地管理,可以使用 pyinstaller 打包你的脚本成 Windows 可执行文件(.exe):

安装 pyinstaller

pip install pyinstaller

使用 pyinstaller 打包脚本:

pyinstaller --noconsole --onefile your_script.py

--noconsole 选项确保脚本没有控制台窗口。

--onefile 选项将所有文件打包成一个单一的可执行文件

执行后,生成的 .exe 文件会在 dist/ 目录中,可以直接在后台运行。

作者简介: 读研期间发表6篇SCI数据算法相关论文,目前在某研究院从事数据算法相关研究工作,结合自身科研实践经历持续分享关于Python、数据分析、特征工程、机器学习、深度学习、人工智能系列基础知识与案例。关注gzh:数据杂坛,获取数据和源码学习更多内容。

原文链接:

【Python程序开发系列】如何让python脚本一直在后台保持运行(干货总结)

相关文章

怎么在linux上运行python(linux运行python命令)

Linux默认是已经安装好了Python程序目前来说,大多数的Linux发行版是安装了两个版本的Python程序一个是Python 2.x一个是Python 3.x一些系统自带的程序文件需要Pytho...

Linux系统升级Python版本的编程实践

摘要:Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库, 广泛应用于系统管理任务的处理和Web编程。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。其特点...

松勤技术精选:Python打包exe,换电脑也可直接运行哦!

为什么要打包exe有的时候只需要让别人运行某种功能,传输文件以及代码是需要别人配置好一定的环境才可以操作,而打包成exe文件就可以直接运行文件。pyinstaller打包python中毕竟常用的打包方...

探索Android设备上运行Python的应用框架

在移动设备上运行Python代码,对于许多开发者来说是一个极具吸引力的想法。无论是初学者还是经验丰富的程序员,都希望能在任何地方、任何时间编写和测试Python代码,以提高工作效率。幸运的是,Andr...

玩转Termux:教你在手机上安装运行Python!

大家好,这里是 「@手机编程」,我是作者:舞剑,记得「关注我」前面讲解了 Termux 的下载方式以及基础设置,大家对于这款神器APP了解的不少,接下来就是喜闻乐见的开发环境安装环节,php、Pyth...

Python终端常用命令全攻略:轻松掌握命令行魔法

在数字世界的浩瀚海洋中,Python以其简洁明了的语法和强大的功能赢得了开发者的青睐。作为Python开发者,熟练掌握终端命令不仅能够提高工作效率,还能让我们在代码的世界里更加游刃有余。今天,就让我们...