精华内容
下载资源
问答
  • 多进程的缺点 进程数量有限 ...多线程的缺点 受限于CPU --> 影响响应能力 若是阻塞IO则响应能力差 若是非阻塞IO则需要需要更多时间、CPU去看数据是否到达 怎么避免这些缺点呢? 推荐: IO多路复用 ...

    多进程的缺点

    1. 进程数量有限
    2. 代价太高(进程的销毁、创建、切换)
    3. 受限于CPU核心数
    4. 内存隔离
    5. 进程间通信代价高

    多线程的缺点

    1. 受限于CPU --> 影响响应能力

    若是阻塞IO则响应能力差
    若是非阻塞IO则需要需要更多时间、CPU去看数据是否到达

    怎么避免这些缺点呢? 推荐: IO多路复用

    展开全文
  •  python的多线程的问题:GIL导致PYTHON 无法使用到计算机的多核,仅能使用单核  JAVA传统的多线程主要解决的问题:  1、运行于多核CPU上,各线程可分布于CPU的各个核心,让程序真正的并发  2、因为外设(IO...

    一、前提:

        python的多线程的问题:GIL导致PYTHON 无法使用到计算机的多核,仅能使用单核

        JAVA传统的多线程主要解决的问题:

            1、运行于多核CPU上,各线程可分布于CPU的各个核心,让程序真正的并发

            2、因为外设(IO外设)的速度不匹配,导致线程阻塞。所以需要多线程切换来让阻塞的线程让出CPU,让其它线程运行。

     

    二、IO密集型的应用

    1、未占满CPU单核的处理能力   

        1、1 python 多钱程的表现:  python没有GIL导致的缺点(或缺点不会特别明显)  

        1、2 性能:与普通的多线程性能差不多   

        1、3 建议:因为CPU占用率低于单核,而线程切换,又会占用CPU的资源,所以,在线程切换的次数很多,导致线程切换的性能损耗占比很高(线程切换的次数相关的因素:线程数量很多,IO阻塞时间很短 ),这个时候协程的优点表现明显,建议使用协程 ,否则,随便选

    2、超过了 CPU单核的处理能力     

        2、1 python 多钱程的表现:  python表现出GIL导致的缺点,无法利用到计算机的多核   

        2、2 性能:性能远低于普通的多线程     

        2、3 建议:因为CPU占用率高于单核,为了利用到CPU其它核心,所以建议使用多进程的方式,利用CPU多核,提高程序的并发

    3、进程+协程的模型(不能简单的使用多进程代替JAVA传统的多线程):

            传统的java多线程处理IO密集的方式,就是使用很多数量的线程,使用线程的切换来解决因为线程阻塞而浪费的CPU时间。IO的阻塞,会导致线程的切换。但是,IO的阻塞,不一定能导致进程的切换。而且,使用进程的切换比线程的切换的性能损耗大一个数量级。

            所以,在IO密集的应用中,不能仅仅使用多进程的方式,替代传统的JAVA 多线程。应该使用多进程+协程的模型。使用协程来解决IO阻塞导致的切换,以便尽量减少进程的数量(建议:CPU核心 *2>进程的数量 >CPU核心),来减少进程的切换(进程的切换由操作系统调度,协程解决IO阻塞没有切换带来的性能损耗)。

     

    三、CPU密集型的应用

    python的协程和多线程都无法利用到CPU的多核,所以,必须多进程(但是进程数量不能太多)

     

    四、现实:IO密集+CPU密集

    一般的应用,很难完全的定位于IO密集型或是CPU密集型

    举例:传统的WEB应用,WEB服务器看似IO密集 >>>CPU密集 ,但这种情况并非100%,尤其,在微服务的开发模式下(因为微服务数据私有),所以数据的计算处理都移到了WEB服务器上了(比如,数据的整合,排序,筛选)等等。

    现实是很多时候,我们的应用都兼顾 IO密集和CPU密集,所以,在编程时,综合以上因素权衡选择合理的模型。

     

    五、最后的一句话总结:

            未占满CPU单核的处理能力,多线程简单,协程简单高效

            超过了 CPU单核的处理能力 ,必须多进程,但切记,解决IO密集的方式仍然要使用多线程或协程。

    展开全文
  • 我们都知道Python目前非常火...和C语言、JAVA相比,Python 运行速度确实慢很,其实这里所指运行速度慢在大多数情况下用户是无法直接感知到,必须借助测试工具才能体现出来,但是你是无法直接通过肉眼感知...

    我们都知道Python目前非常火,有很多人都在学习Python,它可以用来做数据库,多媒体,web开发框架,网络编程,游戏编程等等很多领域。但是世界上就没有十全十美的东西,Python当然也有不足之处。

    1、运行速度慢。

    和C语言、JAVA相比,Python 的运行速度确实慢很多,其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来的,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,如果有速度要求的话,可以用C++改写关键部分。

    2、代码不能加密。

    因为Python是解释性语言,它的源码都是以明文形式存放的,但既是优点也是缺点吧。如果项目要求源代码必须是加密的,那就可以不用Python来去实现。python的开源性是Python语言不能加密,但是目前国内市场纯粹靠编写软件卖给客户的越来越少,网站和移动应用不需要给客户源代码,所以这个问题就是问题了。随着时间的推移,很多国内软件公司,尤其是游戏公司,也开始规模使用它。

    3、架构选择太多,线程不能利用多CPU问题

    没有像C#这样的官方.net构架,也没有像ruby,由于历史较短,构架开发的相对集中。Ruby on Rails 构架开发中小型web程序天下无敌一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。有限的线程和多处理能力是其未来发展的主要障碍。

    所以Python虽好,也是有一些不足之处的,但还是不能阻挡开发者们对它的喜爱,我们可以根据实际需求去选择一个最适合的开发工具来使用。

    文章部分内容源于网络,联系侵删*

    文章参考源于

    展开全文
  • 多线程的缺点

    2016-01-07 17:21:00
    多线程的缺点: 开启线程需要占用一定的内存空间,(默认情况下,主线程1M,子线程512KB),如果开启大量的线程,会占用大量的内存空间,降低程序的性能。 线程越多,cpu在调度线程上的开销就越大。 程序设计更加...

    多线程的优点:

    能适当的提高程序的执行效率

    能适当提高资源利用率(cpu、内存利用率)

     

    多线程的缺点:

    开启线程需要占用一定的内存空间,(默认情况下,主线程1M,子线程512KB),如果开启大量的线程,会占用大量的内存空间,降低程序的性能。

    线程越多,cpu在调度线程上的开销就越大。

    程序设计更加复杂:比如线程之间的通讯、多线程的数据共享

     

     

    在子线程中最好加一个自动释放池。(不知道哪里听的,貌似是子线程用不了主线程的自动释放池);

    转载于:https://www.cnblogs.com/zhenghuadong/p/5110572.html

    展开全文
  • Java多线程和多进程的对比1、多进程(1)多进程的优点(2)多进程的缺点2、多线程(1)多线程的优点(2)多线程的缺点 1、多进程 当前的操作系统都是多任务OS。每个独立执行的任务就是一个进程。 操作系统OS将时间...
  • 同步还是异步,单线程还是多线程是我们软件开发中经常面临设计选择,只有准确区分它们之间缺点,才能根据我们实际应用场景作出正确选择。它们两两组合一共有四种模式,下面就我自己理解做一些总结分析。...
  • 本篇主要讲多线程并发优缺点,包括执行IO密集型任务和计算型密集任务时分别使用串行和并发来看CPU使用效率。希望感兴趣小伙伴可以坚持看下去同时欢迎提出宝贵意见让我们一起进步!01:问题引入为何需要...
  • 多线程的缺点 任何技术都不可能在所有情况下都是完美的,知道技术的不足,才能在实际项目中通过技术更好的完成业务需求。 多线程缺点主要如下: 1.多线程程序更加复杂。(实现相比单线程更难,设计也更加复杂。不是...
  • 多线程缺点

    2016-10-09 17:36:18
    多线程技术是一把双刃剑,在使用时需要充分考虑它缺点多线程处理可以同时运行多个线程。由于多线程应用程序将程序划分成多个独立任务,因此可以在以下方面显著提高性能:  (1)多线程技术使程序响应速度更快...
  • 在某些平台上创建和启动新线程是相对较慢的操作,在性能至上的应用程序中,这可能是很大的缺点。不过,线程池技术为这类问题提供了简单的解决方案,执行很并发操作的应用程序通常会使用线程池,尤其是当应用程序...
  • 单线程和多线程的缺点

    千次阅读 2018-08-23 12:58:55
    单线程和多线程的缺点   单线程和多线程的缺点 多线程处理的优点 同步应用程序的开发比较容易,但由于需要在上一个任务完成后才能开始新的任务,所以其效率通常比多线程应用程序低。如果完成同步任务所用的...
  • 1、初始启动变慢在某些平台上创建和启动新线程是相对较慢的操作,在性能至上的应用程序中,这可能是很大的缺点。不过,线程池技术为这类问题提供了简单的解决方案,执行很并发操作的应用程序通常会使用线程池,...
  • 多线程的优点提高资源利用率如读取一个目录下的所有文件,如果采用单线程模型,则从磁盘读取文件的时候,大部分CPU用于等待磁盘去读取数据。如果是采用多线程并发执行,则CPU可以在等待IO的时候去做其他的事情,以...
  • 多线程缺点

    2021-03-29 16:41:49
    1、如果有大量的线程,会影响性能。 2、更的线程需要更的内存空间。...4、线程的中止需要考虑其对程序运行的影响。 5、通常块模型数据是在个线程间共享的,需要防止线程死锁情况的发生。 ...
  • 多线程技术是一把双刃剑,在使用时需要充分考虑它缺点多线程处理可以同时运行多个线程。由于多线程应用程序将程序划分成多个独立任务,因此可以在以下方面显著提高性能:(1)多线程技术使程序响应速度更快 ,...
  • 多线程及其优缺点什么是线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。(wiki百科)创建线程的三种方式public class ThreadTest {public static void main(String[] args) ...
  • 多线程多线程缺点、应用场景

    千次阅读 2019-03-10 23:35:25
    为了提高CPU的使用率,采用多线程的方式去同时完成几件事情而不互相干扰.为了处理大量的IO操作(IO密集时,cpu利用率会下降)时或处理的情况需要花费大量的时间等等,比如:读写文件,视频图像的采集,处理,显示,保存等 ...
  • 多线程 一、线程概述 四、线程常用方法 多线程 一、线程概述 1. 进程 正在执行应用程序(java.exe),一个可执行程序一次运行过程 独立性:不同进程之间相互独立 动态性:是一直活动 并发性:多个...
  • 多进程和多线程的缺点分析    多进程和多线程的区别是什么?此前小编给大家介绍了进程和线程的区别,那么大家知道多进程和多线程的区别又是什么吗?它们分别有什么优缺点?为了解决大家的疑惑,小编特地为大家...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,715
精华内容 2,686
关键字:

多线程的缺点