进程简单来说就是一个正在运行的程序
多进程就是在一个任务中开启多个子进程,让这些子进程同时运行指定的代码,
进程之间的数据是完全隔离的
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系统中是没有的