【需求】:编写一个程序能够同时做多件任务
【方案】:写一个程序,根据需要在程序内部可以创建多个进程完成任务
1.import os
pid = os.fork()函数
功能:创建一个新的进程
参数:无
返回值:
1.失败返回一个负数 -1
2.成功:在原有进程中返回(大于0的正整数)新进程的PID号,在新进程中返回0
总结:
1.子进程会复制父进程全部代码段,包括fork之前产生的内存空间
2.子进程从fork的下一句开始执行
3.父子进程通常会根据fork返回值的差异选择执行不同的代码
4.子进程虽然复制父进程的代码空间,但是有自己的特有属性,比如PID号,PCB等
5.父子进程在执行上互不干扰,执行顺序不确定
6.父子进程空间独立,在本进程中对空间的操作不会影响到其他进程
示例1:
# fork.py
import os
from time import sleep
# fork之前的代码只有父进程会执行
print('********')
# fork之前产生内存空间的存储,子进程也会有
a = 1
# 创建新的进程
pid = os.fork()
if pid < 0:
print('创建进程失败!')
# 只有子进程会执行的部分
elif pid == 0:
sleep(3)
print('a=',a)
print('新创建的进程!')
# 只有父进程会运行的部分
else:
sleep(