• 进程和线程的区别


    一、多任务原理

      通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker

    二、多进程

      主进程就是Master,其他进程就是Worker

      优点:

        (1) 稳定性高:一个子进程崩溃了,不会影响主进程和其他子进程,当然主进程挂了,所有进程也就全挂了,但是 Master 进程只负责分配任务,挂掉的概率低

      缺点:

        (1) 创建进程的代价大:在 Unix/Linux 系统下,用系统底层的 fork 调用还行,在 Windows 下创建进程开销巨大(因为它要依赖三方库)

        (2) 操作系统能同时运行的进程数也是有限的;在内存和 CPU 的限制下,如果有几千个进程同时运行,操作系统连调度都会成问题

    三、多线程

      主线程就是 Master,其他线程就是 Worker

      优点:

        (1) 多线程模式通常比多进程快一点,但是也快不到哪里去

        (2) Windows 下,多线程的效率比多进程要高

      缺点:

        任何一个线程挂掉都可能直接造成整个进程崩溃

        所有线程共享进程的内存。在 Windows 上,如果一个线程执行的代码出了问题,你经常可以看到这样的提示:“该程序执行了非法操作,即将关闭”。其实往往是某个线程出了问题,但是操作系统会强制结束整个进程。

    四、计算密集行 VS IO密集型

      计算密集型

        要进行大量的计算,消耗 CPU 资源,比如计算圆周率,对视频进行高清解码等等,全靠CPU的运算能力。这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU 执行任务的效率就越低,所以,要最高效的利用 CPU,计算密集型任务的同时进行的数量应当等于 CPU 核心数。

      IO密集型

        涉及到网络、磁盘IO的任务都是 IO 密集型任务,这类任务的特点是 CPU 消耗很少,任务的大部分时间都在等待 IO 操作完成(因为 IO 的速度远远低于 CPU 和内存的速度)。对于 IO 密集型任务,任务越多,CPU 效率越高,但也有一个限度。常见的大部分任务都是 IO 密集型任务,比如 Web 应用。      

    愿你多向优秀的人学习; 愿你不怕麻烦,勤做总结; 愿你每天都有意义; 愿你不负年华; 愿你…… 愿你…… 愿你…… 愿你一生都快乐!
  • 相关阅读:
    查看Ubuntu版本
    CentOS下实现postgresql开机自启动
    CentOS下查看crontab执行历史记录
    经常使用的一个python logging封装,支持同时向console和文件输出
    crontab中执行postgresql命令
    postgresql下一种对已有数据进行重新分表的plpgsql脚本
    2012需要分析的一些技术(1)
    Python Extension Packages for Windows
    一个简单的根据行数对大文件进行分片的python程序
    偶拾
  • 原文地址:https://www.cnblogs.com/linpd/p/10055082.html
Copyright © 2020-2023  润新知