python多进程认识

背景:

梳理一下

参考:

彻底搞懂 python进程和线程_哔哩哔哩_bilibili

多线程是同时执行多个线程的吗_余生大大的博客-CSDN博客_多线程是同时进行的吗

python多线程多进程与Java区别(整理笔记9)_友人A_的博客-CSDN博客_java多线程和python多线程的区别

过程:

进程是计算机分配资源的最小单位,线程是CPU执行的最小单位
不同于线程之间的资源共享,python中进程创建有三大模式fork,spawn,forkserver
主要关注于windows下的spawn 
spawn这个不支持线程锁,但是支持进程锁,需要关注一下

进程之间的数据共享可以通过四种方式来实现
1-c语言风格的代码[Value('i', 666)]
2-manager
3-队列
4-pipes
pipes和queue不会出现数据混乱
只有c语言那种方式和manager会出现混乱
实际开发中这种demo理论上应该很少,但是还需要实践
进程池的add_done_callback回调和线程池执行是有所区别的,回调是主进程执行
而线程池的回调是子主线程执行

关心的问题:

python多线程为什么说是伪多线程?什么是并发和并行?

我们以java语言来举例,java的多线程能实现并发和并行,但是python由于GIL的存在,只能实现并发,不能实现并行。如果你想要实现并行,那么你需要使用到多进程,但是多进程的资源开销显然比多线程要大,从java的角度来说,python的多线程就是伪多线程[因为只是实现了并发,不能实现并行]。

猜你喜欢

转载自blog.csdn.net/Elephantpretty/article/details/124288093