zoukankan      html  css  js  c++  java
  • 协程(Coroutine)与多线程,多进程

    执行多个任务可以使用多线程或多进程。

    多进程中,同一个变量,各自有一份拷贝存在于每个进程中,互不影响

    多线程中,所有变量都由所有线程共享。而线程间的切换是系统进行调度,无法控制,所以可能

    一个进程中的多个线程可能会同时调用某个变量的值,造成变量值的混乱,这时就引进了线程锁,但是线程锁又容易造成死锁,也阻止了多线程的并发。

    另外Python 解释器由于设计时有GIL全局锁,导致了多线程无法利用多核。多线程的并发在Python中就是一个美丽的梦。

    在Thread和Process中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread最

    多只能分布到同一台机器的多个CPU上。

    多进程会消耗系统较多的资源,系统支持的进程数也有限,虽然运行任务较稳定

    多线程的单个线程崩溃就会使整个进程崩溃,又有线程全局锁。

    异步IO支持,就可以用单进程单线程模型来执行多任务,这种全新的模型称为事件驱动模型。

    协程就是一个异步IO的支持模式。协程这种子程序,可以在执行的时候中断,等需要耗时的操作执行完后发消息通知主线程,

    然后再接着从刚才中断的地方继续执行。这样在任务间的切换是通过程序内部定义来控制的,也不需要线程锁,执行效率高。

  • 相关阅读:
    JVM探秘:jstack查看Java线程状态
    JVM探秘:MAT分析内存溢出
    JVM探秘:jmap生成内存堆转储快照
    JVM探秘:jstat查看JVM统计信息
    JVM探秘:jinfo查看JVM运行时参数
    JVM探秘:JVM的参数类型
    JVM探秘:内存分配与回收策略
    JVM探秘:GC日志收集与分析
    JVM探秘:垃圾收集器
    JVM探秘:垃圾收集算法
  • 原文地址:https://www.cnblogs.com/Ting-light/p/9547353.html
Copyright © 2011-2022 走看看