python多进程与多线程(一):二者简介

事情起因

究竟是什么原因让某高校大学生深夜不寐,去学习多线程与多进程呢?

还是因为我在程序接单群接到了这样一单,如下:

在这里插入图片描述

题目挺简单的,但是做到最后,发现程序运算量很大,想着可不可以写成多线程的方式去执行,这样时间就能节省很多了。

后来写成多线程的方式,发现运行时间竟然比单线程还长。。。(擦汗,后来发现是因为join),然后了解到有多进程这个东西。

曾经的我认为多线程天下无敌,可以解决一切问题,但是今天才知道。。。唉,我就是个眼界低下的小渣渣

我们先大体来看看两者有什么区别吧。

两者de特点

功能多线程多进程
操作全局变量共享简单;同步复杂共享复杂,同步简单
IO密集操作效率高
计算密集操作效率高
内存、CPU占用内存少,切换简单,CPU利用率高占用内存多,切换复杂,CPU利用率低
可靠性一个线程挂掉将导致整个进程挂掉进程间不会相互影响
分布式适应于多核、多机分布 ;适应于多核分布

两者联系

进程:一个正在执行的程序,它是资源分配的最小单位

线程:有时又称轻量级进程,程序执行的最小单位,系统独立调度和分派CPU的基本单位。

两者都是完成多任务的方式。

一个进程默认有一个主线程,一个线程可以包含多个线程

鱼还是熊掌:浅谈多进程多线程的选择

关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。

简单来说:

  • IO密集操作使用多进程
  • 计算密集操作使用多进程

为什么很多情况不用线程?

通常情况下是因为效率不高

实际操作对比发现,单线程10分钟任务,多线程花费8分钟,多进程花费5分钟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笼中小夜莺

嘿嘿嘿,请用金钱尽情地蹂躏我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值