• Python 中的线程-进程1


    原文:https://www.cnblogs.com/i-honey/p/8042047.html

    1、 并行和并发

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

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

    2、 并发的解决

    1)队列、缓冲区:

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

    2)优先队列:

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

    3)争抢:

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

    4)预处理:

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

    5)垂直扩展:

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

    6)水平扩展:

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

    7)消息中间件:

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

    3、 进程和线程

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

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

    4、 线程的状态

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

     

  • 相关阅读:
    为什么你应该(从现在开始就)写博客
    ASP.net 中使用Flexigrid详细教程之二直接使用数据库数据(有图有真相)
    保护眼睛的方法 (眼睛累了吗 来看看吧)
    程序员不如快递员?
    项目管理界面
    地址栏射击游戏!对,你没看错,就是在地址栏上玩的游戏,有图有真相!
    书写是为了更好的思考
    IT人员如何找到自己的时间?
    std::mem_fun_ref,mem_fun1_ref分析
    __declspec(selectany) 的作用是什么
  • 原文地址:https://www.cnblogs.com/kaishirenshi/p/9717998.html
Copyright © 2020-2023  润新知