• Python 多线程 进程与线程相关概念 (一)


     

    0x00 并行和并发

    并行:同时做某些事,可以互不干扰的同一时刻做几件事。

    并发:也是同时做某些事,但是强调,同一时刻做了几件事。

    0x01 并发的解决:

    1)队列、缓冲区:

    排队就是队列,先进先出。排队是一种解决并发的方法。
    排成的队列,其实就是一个缓冲地带,就是缓冲区。

    2)优先队列:

    在到达队列时优先处理,就是优先队列。

    3)争抢:

    资源被一个线程占据后,就会锁定资源,其它线程就需要等该线程释放资源再进程争抢。这是一种锁机制。

    4)预处理:

    提前加载线程需要的数据,缓存场景常用。

    5)垂直扩展:

    比如一台服务器无法快速处理高并发业务时,可以提升该服务器的内存、增加CPU性能和CPU数,这就是垂直扩展。

    6)水平扩展:

    也可以叫横向扩展,当一台服务器无法满足业务时,就增加服务器数量、带宽,这就是水平扩展。

    7)消息中间件:

    使用消息队列,比如RabbitMQ、ActiveMQ、RocketMQ、kafka等。这会涉及到生产者与消费者模型,后一篇文章会详细介绍。


    0x02 进程和线程

    线程,是操作系统能够进行调度的最小单位,每个进程至少有一个线程,同一个进程内的线程可以共享进程的资源,每一个线程拥有自己独立的堆栈。

    进程,是系统进行资源分配和调度的基本单位,是一个或多个线程的集合,在操作系统中,每个进程在内存中相对独立的,进程间不可以随便的共享数据。

    0x03 线程的状态:

    就绪Ready:
      线程能够运行,但在等待被调度。可能线程刚刚创建启动,或刚刚从阻塞中恢复,或者被其它线程抢占.
    运行Running:
      线程正在运行
    阻塞Blocked:
      线程等待外部事件发生而无法运行,如I/O操作.
    终止Terminated
      线程完成,或退出,或被取消.

     

  • 相关阅读:
    macOS Sierra 如何打开任何来源
    centos 安装git服务器,配置使用证书登录并你用hook实现代码自动部署
    Linux下修改Mysql的用户(root)的密码
    mysql主从复制
    CentOS7下安装MySQL5.7安装与配置
    gulp安装和使用
    libiconv库的安装和使用
    Android 开发中常见的注意点
    扯一扯 C#委托和事件?策略模式?接口回调?
    Python 学习开篇
  • 原文地址:https://www.cnblogs.com/i-honey/p/8042047.html
Copyright © 2020-2023  润新知