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))