python的多进程与多fork

作者: 闲睡猫 | 来源:发表于2017-12-02 18:03 被阅读46次

    多进程

    多个进程分别修改程序中的全局变量,结果会是怎样的?
    如:全局变量num初始值为0,多个进程分别对该变量进行加1,是否会产生叠加效果?

    import os
    import time
    num = 0
    # fork函数在windows不支持
    pid = os.fork()
    
    if pid == 0:
        num += 1
        print("全局变量num=%d" % num)
    else:
        time.sleep(1)
        num += 1
        print("全局变量num=%d" % num)
    
    # 全局变量num=1
    # 全局变量num=1
    

    从代码执行结果可知:每个进程中所有数据都各自拥有一份,互不影响

    多次fork

    在一个程序中,调用两次fork函数,会有多少个进程?3个?4个?

    用以下程序证明:

    import os
    import time
    
    pid = os.fork()
    if pid == 0:
        print(1)
    else:
        print(2)
    
    pid = os.fork()
    if pid == 0:
        print(3)
    else:
        print(4)
    
    # 2
    # 1
    # 4
    # 4
    # 3
    # 3
    

    由此可知,fork两次后,共有6个进程

    第一次fork后,有两个进程。 这两个进程在第二次fork时,又各自产生新的进程

    如图所示:

    多次fork

    源码下载

    相关文章

      网友评论

        本文标题:python的多进程与多fork

        本文链接:https://www.haomeiwen.com/subject/lkanbxtx.html