12-多进程fork
Unix/Linux操作系统提供了一个fork()
系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是fork()
调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。
-
子进程永远返回
0
,而父进程返回子进程的ID。子进程可以使用os.getppid()
获取父进程id -
Windows没有
fork
,所以无法运行 - Linux和基于Unix的Mac可以运行
import os
print('主进程 {} 已开启...'.format(os.getpid()))
# 只支持Unix/Linux/Mac:
pid = os.fork()
if pid == 0:
print('我是子进程 {} 我的父进程是 {}'.format(os.getpid(), os.getppid()))
else:
print('我是主进程 {}, 我刚创建了个子进程 {}.'.format(os.getpid(), pid))