• 进程、线程、携程的定义以及性能的比较


    1.什么是进程、线程、协程?区别?优缺点?
    定义:
    (1)进程是系统进行资源分配和调度的独立单位

    (2)线程是进程的实体,是CPU调度和分配的基本单位

    (3)协程,又称微线程,自带CUP上下文,是比线程更小的执行单元,占用资源小,效率高

    区别:
    (1)一个程序至少有一个进程,一个进程至少有一个线程

    (2)线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高

    (3)进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大的提高了程序的运行效率

    (4)线程不能够独立执行,必须依存在进程总

    优缺点:
    进程:

    优点:顺序程序的特点:既有封闭性和可再现性

    程序的并发执行和资源共享,多道程序设计出现后,实现了程序的并发执行和资源共享,提高了系统的效率和系统的资源利用率

    缺点:操作系统调度切换多个线程比切换调度进程在速度上快的多,而且进程间内存无法共享,通讯也比较麻烦。

    线程之间由于共享进程内存空间,所以交换数据非常方便,在创建或撤销进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤销线程时的开销

    线程:

    优点:

    它是一种非常”节俭”的多任务操作方式。在Linux系统下,启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种”昂贵”的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。当然,在具体的系统上,这个数据可能会有较大的区别;线程间方便的通信机制,由于同一进程下的线程之间共享数据空间,所以一个线程的数据可以直接为其它线程所用,这不仅快捷,而且方便;使多CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上;

    缺点:调用时,要保存线程状态,频繁调度,需要占用大量的机时

    程序设计上容易出错(线程同步问题)

    2.多进程、多线程优缺点
    1.多线程的优点:

    无需跨进程边界

    程序逻辑和控制方式简单

    所有线程可以直接共享内存和变量等

    线程方式消耗的总资源比进程方式好

    缺点:

    每个线程与主程序共用地址空间,受限于2GB地址空间

    线程之间的同步和加锁控制比较麻烦

    一个线程的崩溃可能影响到整个程序的稳定性

    到达一定的线程数程度后,即使再增加cpu也无法提高性能

    线程能够提高的总性能有限,并且线程多了之后,线程本身的调度也是一麻烦事情,需要消耗较多的CPU

    3.针对于爬虫 应 选择多线程还是多进程?
    多进程:密集CPU任务,需要充分使用多核CPU资源(服务器,大量的并行计算的时候)用多进程

    缺点:多个进程之间通信成本高,切换开销大

    多线程:密集I/O任务(网络I/O 磁盘I/O 数据库I/O)使用多线程合适

    缺点:同一个时间切片只能运行一个线程,不能做到高并行,但是可以做到高并发

    协程:又称微线程,在单线程上执行多个任务,用函数切换,开销极小,不通过操作系统调度,没有线程。进程的切换开销

    多线程请求返回是无序的,哪个线程有数据返回就处理哪个线程,而协程返回的数据是有序的

    缺陷:单线程执行,处理密集CPU和本地磁盘IO的时候,性能较低。处理网络I/O性能还是比较高.

    总体来看 ,多线程是最佳人选

  • 相关阅读:
    零售行业解决方案一
    N-Tier Entity Framework开源项目介绍
    软件代码生成之Codesmith模板.netTiers
    ActiveMQ消息队列介绍
    EntityFramework动态多条件查询与Lambda表达式树
    GitLab版本管理
    REST服务介绍
    2014年物联网Internet of Things应用简介
    wordpress如何屏蔽wp-json(禁用REST API)
    bootstrap tab切换如何让鼠标移动自动切换内容
  • 原文地址:https://www.cnblogs.com/ithubb/p/13391567.html
Copyright © 2020-2023  润新知