进程

进程简单来说就是一个正在运行的程序

多进程就是在一个任务中开启多个子进程,让这些子进程同时运行指定的代码,

进程之间的数据是完全隔离的

from multiprocessing import Process
def func():
    print(111)
if __name__ == '__main__':
    p = Process(target=func)
    p.start()
    p.join()
    print('子进程已经完全运行完毕')

上面是一个关于子进程如何开启的代码

from multiprocessing import Process
def func():
    global a
    a = 2
if __name__ == '__main__':
    a = 1
    p = Process(target=func)
    p.start()
    p.join()
    print(a)
    print('子进程已经完全运行完毕')


结果:
1
子进程已经完全运行完毕

上图是一个简单的进程之间数据不能共享的列子,因为p执行了join方法,所以join后面的代码都要等到子进程代码完全执行完毕之后再接着执行join后面的代码,但是此时使用了global更改了变量a,但是a打印出来的值还是1,说明进程之间数据是完全隔离的

守护进程

import time
from multiprocessing import Process
def func():
    time.sleep(3)
    print('子进程执行结束')

def func1():
    print('守护进程执行结束 ')
if __name__ == '__main__':
    a = 1
    p = Process(target=func)
    p1 = Process(target=func1)
    p1.daemon = True
    p.start()
    p1.start()
    print('子进程已经完全运行完毕')
结果:
子进程已经完全运行完毕
子进程执行结束

上图的守护进程是p1,当主进程里面的代码运行完毕了,守护进程里面的代码就不执行了

僵尸进程和孤儿进程只会出现在Linux系统中 Windows系统中是没有的 

原文地址:https://www.cnblogs.com/baby12138/p/10461613.html