Python 中的后台进程
我们将介绍如何在后台运行Python脚本作为后台进程。 我们还将介绍Python中的pythonw。
Python 中的后台进程
在自动化和数据科学的世界中,我们已经进步到这样的水平,我们可以轻松地自动化我们的日常任务,并且它们可以在后端处理,甚至不需要更新我们(除非我们对其进行编程来更新我们)。
本文将介绍如何创建脚本并将其作为后台进程运行。
后台进程运行一次,之后,当我们启动计算机时,它们会自动处理,当我们关闭计算机时,它们会停止。
我们还可以通过转到任务管理器或使用 Python 命令根据进程 ID 来终止后台进程。
Python 中 Windows 的后台进程
有两种不同的方法可以将 Python 脚本作为后台进程运行; 一种方法是使用 pythonw,它用于在 Windows 中将 Python 脚本作为后台进程运行。
我们将使用 pythonw 作为后台进程运行 Python 脚本。 Pythonw 用于在不使用终端窗口的情况下运行 Python 脚本。
不使用终端窗口运行任何 Python 脚本的语法如下。
# python
pythonw backgroundprocess.py
我们可以在上面的命令中将backgroundprocess.py替换为我们想要作为后台进程运行的文件名。
Linux 或 Mac 中 Python 的后台进程
要在 Linux 或 Mac 上将 Python 脚本作为后台进程运行,我们在命令末尾使用 & 运算符,这将使其作为后台进程运行。
在 Linux 或 Mac 中将任何 Python 脚本作为后台进程运行的语法如下。
# python
python backgroundprocess.py &
我们可以在上面的命令中将backgroundprocess.py替换为我们想要作为后台进程运行的文件名。
一旦我们的脚本作为后台进程运行,我们就可以检查进程 ID,以便在需要时停止后台进程。 我们可以在Windows中使用以下命令来终止我们刚刚启动的进程。
# python
kill -9 {{process id}}
如果我们想杀死Linux或Mac设备上的进程,我们可以运行以下命令。
# python
kill -9 {{process id}} &
在上面的命令中,-9表示我们要尽快杀死该进程。 因此,使用此命令将终止我们将在大括号内提供其 ID 的进程。
现在,如果我们创建了一个重要的脚本,我们想要检查它的工作方式并获取有关我们作为后台进程运行的脚本的更新,我们可以使用简单的命令将该脚本的输出记录或刷新到另一个文件中 命令。
用于记录后台进程输出的命令如下所示。
# python
pythonw backgroundprocess.py > backgroundlog
如果我们想在 Linux 或 Mac 设备中记录后台进程的输出,我们可以使用以下命令。
# python
python backgroundprocess.py > backgroundlog &
需要注意的一件重要事情是,我们的后台进程生成的输出将首先保存在缓冲存储器中,直到后台进程停止。 因此,只有在停止进程后,我们才能从后台进程获取日志或刷新输出。
但是,如果我们无法停止后台进程,因为它可能会丢失一些数据,该怎么办? 还有另一种方法可以将输出直接记录到文件中,而无需先将其保存在缓冲存储器中。
我们可以使用以下命令。
# python
pythonw -u backgroundprocess.py > backgroundlog
如果我们想直接将输出记录到文件中,我们可以在 Linux 或 Mac 设备上使用此命令,如下所示。
# python
python -u backgroundprocess.py > backgroundlog &
上面的命令现在将直接将输出添加到我们的后台日志文件中。 但我们仍然必须保持终端打开才能获取输出。
如果我们在后台进程完成之前关闭终端,所有进程都将停止。 我们正在运行的所有进程都将被挂起。
Python 总是能为各种问题提供解决方案。 还有另一个称为 nohup 的命令。
该命令确保我们的后台进程完整且不受任何干扰。
即使我们关闭父终端,它仍然会确保我们的后台进程正在运行。 使用 nohup 命令的语法如下所示。
# python
nohup python -u backgroundprocess.py
上面的示例表明我们忘记将输出记录在另一个文件中以便在需要时进行检查。 我们没有忘记 nohup
命令会自动生成日志并将其存储到文件中,以便在后台进程运行时查看所有记录。
nohup
命令会将所有日志存储到 nohup.out 文件中。 如果我们想杀死这个进程,我们可以很容易地使用上面使用的 kill
命令来杀死这个进程。
但是,如果我们不记得要删除的进程的 ID,我们可以使用另一个命令来获取正在作为后台进程运行的文件的名称。 它会找到进程ID并使用 kill
命令来终止该进程。
该命令的语法如下所示。
# python
ps ax | grep backgroundprocess.py
相关文章
Python 3 中的 Urllib2
发布时间:2023/06/30 浏览次数:92 分类:Python
-
在本篇文章中,我们的目标是探索解决 Python 中 ModuleNotFoundError: No module named 'urllib2' 问题的方法。Python 3 中的 urllib
Python 中的邻接矩阵
发布时间:2023/06/29 浏览次数:108 分类:Python
-
Python 中使用图数据结构来表示各种现实生活中的对象,例如网络和地图。 我们可以使用邻接矩阵来表示图。本文将讨论在 Python 中实现邻接矩阵的不同方法。创建邻接矩阵
Python 中的 WARNING: An Illegal Reflective Access Operation Has Occurred
发布时间:2023/06/29 浏览次数:198 分类:Python
-
WARNING: An illegal reflective access operation has occurred 并不是什么新鲜事。 它从 Python 2.2 版本开始就存在了。反射是程序检查自身的能力,换句话说,是找出有关其结构和行为的信息的能力。
NumPy 相关函数
发布时间:2023/06/29 浏览次数:68 分类:Python
-
本篇文章介绍了Python中NumPy库的相关函数 np.corrcoef() 函数。NumPy 中的相关性 相关系数是一个数字值,表示数据集给定特征之间的关系。
在 Python 中将 Unicode 转换为 ASCII
发布时间:2023/06/29 浏览次数:125 分类:Python
-
通过本文,我们将学习如何将 Unicode 编码为字节,了解系统编码的不同方法以及在 Python 中将 Unicode 转换为 ASCII。在 Python 中将 Unicode 转换为 ASCII
从 Python 程序中运行 PowerShell 脚本
发布时间:2023/06/29 浏览次数:90 分类:Python
-
本文将重点讨论从 Python 代码执行 PowerShell 逻辑。Python subprocess.Popen()方法 在Python中,可以使用 subprocess.Popen() 方法执行外部程序。
解决 Python中错误 Overflow Encountered in Double_Scalars
发布时间:2023/06/29 浏览次数:120 分类:Python
-
通常,这些数字的大小变得如此之大,以至于程序进入溢出状态并显示警告 overflow encountered in double_scalars。 本文将解释双标量中的溢出、导致此问题的某种情况以及如何解决它。
解决 C++ 中错误 Python.h: No Such File or Directory
发布时间:2023/06/29 浏览次数:96 分类:Python
-
本文将解释如何解决错误 'Python.h': No such file or directory。 当我们尝试在 C++ 中嵌入 Python 代码,但编译器无法在系统内部找到对 Python 的引用时,通常会发生这种情况。C++ 中 'Python.h': No such file
使用 Pickle 在 Python 中保存和加载对象
发布时间:2023/06/29 浏览次数:67 分类:Python
-
本文演示了如何在 Python 中保存和重新加载对象。 我们还将了解如何使用 Python 进行 Pickling 和 Unpickling。 此外,我们将看到 Pickling 的优点和缺点。