首页 > Python基础教程 > Python并发编程
阅读:1,555
Python os.fork()方法:创建新进程
除可以进行多线程编程之外,Python 还支持使用多进程来实现并发编程。
Python 的 os 模块提供了一个 fork() 方法,该方法可以 fork 出来一个子进程。简单来说,fork() 方法的作用在于,程序会启动两个进程(一个是父进程,一个是 fork 出来的子进程)来执行从 os.fork() 开始的所有代码。
fork() 方法不需要参数,它有一个返回值,该返回值表明是哪个进程在执行:
下面程序示范了使用 fork() 方法创建新进程的过程:
在 Linux 或 Mac OS X 系统上运行上面程序(Windows 不支持 fork() 方法,因此在 Windows 系统上运行上面程序会报锚),可以看到如下运行结果:
在实际编程中,程序可通过 fork() 方法来创建一个子进程,然后通过判断 fork() 方法的返回值来确定程序是否正在执行子进程,也就是把需要并发执行的任务放在
Python 的 os 模块提供了一个 fork() 方法,该方法可以 fork 出来一个子进程。简单来说,fork() 方法的作用在于,程序会启动两个进程(一个是父进程,一个是 fork 出来的子进程)来执行从 os.fork() 开始的所有代码。
fork() 方法不需要参数,它有一个返回值,该返回值表明是哪个进程在执行:
- 如果 fork() 方法返回 0,则表明是 fork 出来的子进程在执行。
- 如果 fork() 方法返回非 0,则表明是父进程在执行,该方法返回 fork() 出来的子进程的进程 ID。
下面程序示范了使用 fork() 方法创建新进程的过程:
import os print('父进程(%s)开始执行' % os.getpid()) # 开始fork一个子进程 # 从这行代码开始,下面代码都会被两个进程执行 pid = os.fork() print('进程进入:%s' % os.getpid()) # 如果pid为0,表明子进程 if pid == 0: print('子进程,其ID为 (%s), 父进程ID为 (%s)' % (os.getpid(), os.getppid())) else: print('我 (%s) 创建的子进程ID为 (%s).' % (os.getpid(), pid)) print('进程结束:%s' % os.getpid())上面程序 fork 出来一个子进程,这意味着程序会分别使用父进程和子进程来执行从此行代码开始的代码。
在 Linux 或 Mac OS X 系统上运行上面程序(Windows 不支持 fork() 方法,因此在 Windows 系统上运行上面程序会报锚),可以看到如下运行结果:
父进程(1795)开始执行
进程进入:1795
我(1795)创建的子进程ID 为(1796).
进程结束:1795
进程进入:1796
子进程,其ID 为(1796),父进程ID 为(1795)
进程结束: 1796
在实际编程中,程序可通过 fork() 方法来创建一个子进程,然后通过判断 fork() 方法的返回值来确定程序是否正在执行子进程,也就是把需要并发执行的任务放在
if pid==0:
的条件执行体中,这样就可以启动多个子进程来执行并发任务。需要注意的是,os.fork() 方法在 Windows 系统上无效,只在 UNIX 及类 UNIX 系统上有效,UNIX 及类 UNIX 系统包括 UNIX、Linux 和 Mac OS X。
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频