黑马程序员 Python 高级语法进阶教程 - 第4节 获取进程编号
多进程是 Python 提升执行效率的重要手段,然而当我们程序中运行了多个进程时,如何管理这些“同时跑起来的任务”?这时候就需要一个重要概念——进程编号(Process ID)。
本节课程将带我们掌握如何在 Python 中获取当前进程编号与父进程编号,并理解这些编号在多进程管理中的作用。
一、为什么要获取进程编号?
正如图中所示,当程序中运行的进程数量变得越来越多时,主进程和各个子进程的执行就很难直观区分。为了方便我们:
-
管理每一个独立运行的进程
-
在日志输出中明确每条信息来源于哪个进程
-
调试或排错更方便
✅ 每个进程都有独立的编号,系统通过 PID(Process ID)识别它们。
二、获取进程编号的方法
Python 标准库中 os
模块提供了两个常用方法:
方法名 | 功能描述 |
---|---|
os.getpid() | 获取当前进程的编号(PID) |
os.getppid() | 获取当前进程的父进程编号(PPID) |
三、代码演示:获取子进程和主进程编号
我们以 coding
和 music
两个函数作为子进程任务进行演示:
import multiprocessing
import os
import time
def coding(count, name):
print("coding 进程编号:", os.getpid())
print("coding 父进程编号:", os.getppid())
for i in range(count):
print(name)
print("coding...")
time.sleep(0.2)
def music(count):
print("music 进程编号:", os.getpid())
print("music 父进程编号:", os.getppid())
for i in range(count):
print("music...")
time.sleep(0.2)
if __name__ == '__main__':
print("主进程编号:", os.getpid())
coding_process = multiprocessing.Process(target=coding, args=(3, "日天"))
music_process = multiprocessing.Process(target=music, kwargs={"count": 3})
coding_process.start()
music_process.start()
🔍 输出示例:
主进程编号:4888
coding 进程编号:4890
coding 父进程编号:4888
music 进程编号:4891
music 父进程编号:4888
这表示我们成功开启了两个子进程,并通过 PID 将它们和主进程区分开。
四、知识点总结
序号 | 内容 | 方法 |
---|---|---|
1 | 获取当前进程编号(PID) | os.getpid() |
2 | 获取当前父进程编号(PPID) | os.getppid() |
📌 注意事项:
-
os.getpid()
和os.getppid()
常用于打印调试信息 -
在多进程中,它们是区分进程身份的有力手段
-
你也可以用这些编号来跟踪资源占用、异常定位等
五、我的理解与思考
在学习完这节课之后,我有了两个新的认识:
-
多进程不仅仅是“跑多个任务”那么简单,能识别和管理进程,才是写好多进程程序的第一步。
-
os.getpid()
和os.getppid()
不仅仅是获取编号,它们其实是连接“进程关系树”的工具:父子进程之间的身份认证,靠它们就能搞清楚。
六、预告:下一节内容
下一节将继续深入多进程的世界,讲解如何使用 join()
方法让主进程等待子进程执行完毕,避免“主线程抢跑”。
如果你也在学习 Python 多任务,不妨一边敲代码一边对照进程号输出,一定能加深对多进程的感知和掌控!
📌 课程来源:黑马程序员 Python 高级语法教程(www.itheima.com)
📌 实操环境:PyCharm + Ubuntu 虚拟机
—— END ——