python,多次fork问题,进程号的问题。

 import os
import time

num = 0

pid = os.fork()

if pid == 0:
    num+=1
    print('哈哈1---num=%d,我的父进程号为%s,我的进程号为%s'%(num, os.getppid(), os.getpid()))
else:
    #time.sleep(1)
    num+=1
    print('哈哈2---num=%d,我的进程号为%s'%(num,os.getpid()))

pid = os.fork()

if pid == 0:
    num+=1
    print('哈哈3---num=%d,我的父进程号为%s,我的进程号为%s'%(num, os.getppid(), os.getpid()))
else:
    #time.sleep(1)
    num+=1
    print('哈哈4---num=%d,我的进程号为%s'%(num,os.getpid()))

我的电脑输出:
哈哈2---num=1,我的进程号为6551
哈哈4---num=2,我的进程号为6551
哈哈1---num=1,我的父进程号为6551,我的进程号为6552
哈哈3---num=2,我的父进程号为6551,我的进程号为6553
哈哈4---num=2,我的进程号为6552
哈哈3---num=2,我的父进程号为6552,我的进程号为6554

我的问题!
为什么下面的‘哈哈4’的进程号和上面的‘哈哈1’进程号是一样的,还有就是下面的‘哈哈3’的进程号为什么会比父进程号+2了?

第一次fork的时候,父进程会产生一个子进程1,第二fork的时候,父进程和子进程1又会各自再产生一个子进程。所以最后有4个进程,然后你对比log分析就明白了