python的多线程是否没有用了[通俗易懂]

python的多线程是否没有用了[通俗易懂]python的多线程是否就完全没有用了呢?相同的代码,为何有时候多线程会比单线程慢,有时又会比单线程快? 这主要跟运行的代码有关: 1、 CPU密集型代码 (

大家好,又见面了,我是你们的朋友全栈君。

python的多线程是否就完全没有用了呢?

相同的代码,为何有时候多线程会比单线程慢,有时又会比单线程快? 
这主要跟运行的代码有关: 
1、 CPU密集型代码 
(各种循环处理、计数等等 ),在这种情况下,由于计算工作多, ticks计数很快就会达到 
100阈值,然后触发 GIL的释放与再竞争 (多个线程来回切换当然是需要消耗资源的),所以 python下的多线程遇到 CPU密集型代码时,单线程比多线程效率高。 
IO密集型代码 (文件处理、网络爬虫等 ),多线程能够有效提升效率 
(单线程下有 IO操作会进行 IO等待,造成不必要的时间浪费,而开启多线程能在 
线程 
A等待时,自动切换到线程 
B,可以不浪费 
CPU的资源,从而能提升程序执行效率 
)。

进行 IO密集型的时候可以进行分时切换 所有这个时候多线程快过单线程( 
5)如果 python想充分利用多核 CPU,可以采用多进程, 每个进程有各自独立的 
GIL,互不干扰,这样就可以真正意义上的并行执行,所以在 
python中,多进程的执行效率优于多线程 
(仅仅针对多核 CPU而言 )。 
所以在多核 CPU下,想做并行提升效率,比较通用的方法是使用多进程,能够有效提高执行效率。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155877.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月2日 下午11:46
下一篇 2022年7月3日 上午6:00


相关推荐

  • mac切换双系统按键_mac双系统开机三个盘

    mac切换双系统按键_mac双系统开机三个盘许多小伙伴都在mac电脑上安装了双系统,那么我们应该如何切换默认系统呢?相信还有很多小伙伴搞不清,那么就让我来给大家介绍一下是怎么设置默认系统的。1、开机按Option键(就是Alt键)。这个其实很简单的,就是电猫开机后,一直按着Option键,在这里我们有时候会出现一些问题就是还没按Option键,它就已经默认进入系统了,或者有时候我们按了很久,却发现屏幕一直处于灰白的状态,这两种情况几乎是我们…

    2022年10月6日
    4
  • JVM调优工具总结

    JVM调优工具总结一、jps:虚拟机进程状况工具它可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(MainClass,main()函数所在的类)名称以及正在运行的本地虚拟机唯一ID(LVMID);它是使用率最高的一个JDK命令行工具,因为其他的命令行工具都需要输入查询到的ID来确定要监控的是哪一个虚拟机进程。命令格式:jps[options][hostid]选项作用-q只…

    2022年5月6日
    42
  • 【梯度下降法】详解优化算法之梯度下降法(原理、实现)

    【梯度下降法】详解优化算法之梯度下降法(原理、实现)梯度下降法 Gradientdesc 简称 GD 是一阶最优化算法 要使用梯度下降法找到一个函数的局部极小值 必须向函数上当前点对应梯度 或者是近似梯度 的反方向的规定步长距离点进行迭代搜索 如果相反地向梯度正方向迭代进行搜索 则会接近函数的局部极大值点 这个过程则被称为梯度上升法 梯度下降法是迭代法的一种 可以用于求解最小二乘问题 线性和非线性都可以 在求解机器学习算法的模型参数 即无约束优化问题时 梯度下降法和最小二乘法是最常采用的方法 在求解损失函数的最小值时 可以通过梯度下降法来迭代求解

    2026年3月17日
    2
  • 智能体(AI Agent)真的就是不靠谱吗?

    智能体(AI Agent)真的就是不靠谱吗?

    2026年3月15日
    2
  • Layui 弹出层选择实现

    Layui 弹出层选择实现实际Web项目中,下拉框仅能实现数据量少的场景,当我们添加一个商品时,我们总希望在添加选择前能看到产品的规格、图片、参数信息,那么用下拉框就显得力不从心了。本次需求如下:实现过程父层JS<script>layui.use([‘layedit’,’form’,’layer’,’upload’],function(){varform=layui.form,$=layui.jquery,la

    2022年5月24日
    46
  • Java开发手册之异常处理

    Java开发手册之异常处理Java开发手册之异常处理

    2022年4月22日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号