Python中os.getpid()与os.fork()函数原理解析

程一诺
程一诺
发布时间:2026-10-13| 5人浏览过
原创

本文详解Python中os.fork()与os.getpid()函数的用法。os.fork用于创建子进程,父进程返回子进程PID,子进程返回0;os.getpid获取当前进程ID。两者结合可清晰管理并发进程的执行逻辑与身份标识。

os.getpid()与os.fork()函数详解

具体实现方式如下所示:


import os
import sys
import time
 
processNmae = 'parent'
 
print "Program executing ntpid:%d,processNmae:%s"%(os.gitpid(),processNmae)
 
#attempt to fork child process
try:
  forkPid = os.fork()
except OSError:
  sys.exit("Unable to create new process.")
 
# Am I parent process?
if forkPid != 0:
  print "Parent executingn"+"tpid:%d,forkPid:%d,processNmae:%s"%(os.getpid(), forkPID,processName)
 
# Am I child process?
elif forkPID == 0:
    processName = "child"
    print "Child executingn" + "tpid: %d, forkPID: %d, processName: %s" % (os.getpid(), forkPID,processName)<br>
print "Process finishingntpid: %d, processName: %s" % (os.getpid(), processName)

每次程序启动时,操作系统都会生成一个新的进程来执行指令。在此基础上,进程还可以调用os.fork函数,指示操作系统创建一个全新的进程。

发起os.fork调用的进程被称为“父进程”,而由父进程创建出的新进程则被称为“子进程”。

每个进程都拥有一个唯一的“进程ID号”,即“pid”,该ID用于唯一标识不同的进程。

当进程调用fork函数时,操作系统会新建一个子进程,该子进程在初始状态下与父进程完全一致。

子进程会继承父进程中的多个值副本,包括全局变量和环境变量等。此时,两个进程之间唯一的区别在于fork函数的返回值不同。

子进程接收到的返回值为0,而父进程则接收到子进程的pid作为返回值。在调用fork函数后,两个进程会并发执行同一个程序代码。

两个进程均从调用fork之后的下一行代码开始执行。父进程与子进程既并发运行又相互独立,这种执行方式被称为“异步执行”。


import os 
pid=os.fork() #fork反复拷贝 
if pid==0: 
  print("A",os.getpid(),os.getppid()) 
else: 
  print("B",os.getpid(),os.getppid()) 
 
# os.getpid()获取当前进程id   os.getppid()获取父进程id 

以上是对Python中os.getpid()和os.fork()函数的详细解析,希望能为读者提供参考,并欢迎大家继续支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。