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

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

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

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

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

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

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

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

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

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

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

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

转载于:https://www.cnblogs.com/Ting-light/p/9547353.html

协程(Coroutine)与多线程,多进程相关推荐

  1. python并发编程:协程asyncio、多线程threading、多进程multiprocessing

    python并发编程:协程.多线程.多进程 CPU密集型计算与IO密集型计算 多线程.多进程与协程的对比 多线程 创建多线程的方法 多线程实现的生产者-消费者爬虫 Lock解决线程安全问题 使用线程池 ...

  2. c++ 协程_理解Python协程(Coroutine)

    由于GIL的存在,导致Python多线程性能甚至比单线程更糟. GIL: 全局解释器锁(英语:Global Interpreter Lock,缩写GIL),是计算机程序设计语言解释器用于同步线程的一种 ...

  3. python3 协程 写法_理解Python的协程(Coroutine)

    由于GIL的存在,导致Python多线程性能甚至比单线程更糟. GIL: 全局解释器锁(英语:Global Interpreter Lock,缩写GIL),是计算机程序设计语言解释器用于同步线程的一种 ...

  4. Tornado 异步协程coroutine原理

    协程定义: 协程,又称微线程,纤程.英文名Coroutine. 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕 ...

  5. 理解Python的协程(Coroutine)

    生成器(Generator) yield表达式的使用 生产者和消费者模型 yield from表达式 协程(Coroutine) @asyncio.coroutine async/await 总结 参 ...

  6. Lua协程Coroutine是什么

    Lua协程Coroutine是什么 协程和线程不同: 同一时刻,一个多线程程序可以用多个线程同时执行:而协程只能有一个在执行 多线程是抢占式的:而协程是非抢占式的,只有协程显示被挂起,才会被挂起 协程 ...

  7. Day794.如何用协程来优化多线程业务 -Java 性能调优实战

    如何用协程来优化多线程业务 Hi,我是阿昌,今天学习记录的是关于如何用协程来优化多线程业务. 近一两年,国内很多互联网公司开始使用或转型 Go 语言,其中一个很重要的原因就是 Go 语言优越的性能表现 ...

  8. C++20中的协程(Coroutine)

    目录 C++20中的协程(Coroutine) 那么,什么是协程? 那么这么好用的协程,是不是只要C++20一推出,我们加上一个关键字就能直接把异步调用转化为同步调用呢? 协程函数和Awaitable ...

  9. Python编程:协程coroutine

    关于协程 协程 coroutine 微线程,一种用户态的轻量级线程 好处: 无需线程上下文切换的开销 无需原子操作锁定及同步的开销 方便切换控制流,简化编程模型 高并发+高扩展+低成本,一个cup支持 ...

最新文章

  1. python 最快 因式分解_python中怎么对一个数进行因式分解?
  2. 十年AI学者影响力盘点:何恺明排名第一,华人学者呈正向流入
  3. 看!我写的关于“简单异或”加密的破解分析演示程序!
  4. 吉长江:基于学习的视频植入技术是未来趋势
  5. php 代码如何使用,PHP如何使用strval()函数?用法和代码示例
  6. javascript setTimeout 和 setInterval 区别
  7. C语言阿斯码,木叶四位上忍设定各不相同,网红负责秀操作,她只需要美就够了...
  8. SpringBoot + MyBatis(注解版),常用的SQL方法
  9. Linux内存管理和分析vmalloc使用的地址范围
  10. Oracle 常用命令举例
  11. 【youcans 的 OpenCV 例程 200 篇】101. 自适应中值滤波器
  12. 开源 CMS Drupal 修复 XSS 和开放重定向漏洞
  13. Bailian2792 集合加法【数学】
  14. 说一说javascript跨域和jsonp
  15. thoughtworks面试总结
  16. tm影像辐射定标_「教程」遥感图像预处理之辐射定标
  17. Geoserver入门操作系列之二:创建图层样式
  18. 11对战平台服务器维护,11对战平台无法进入游戏【解决方法】
  19. 修改上传资源积分c币教程指导
  20. 新冠肺炎疫情数据爬取以及几种简单的地图可视化方法

热门文章

  1. 详解--单调队列 经典滑动窗口问题
  2. 关于eclipse中文注释乱码的问题
  3. HTML 学习笔记 day one
  4. soapui自带的webservice实例 MockService
  5. WPF 程序最大化,窗口,最小化
  6. 2.9 bitset
  7. SPI和RAM IP核
  8. 设计模式总结篇系列:工厂方法模式(Factory Method)
  9. [转] 64位windows下添加postgreSQL odbc数据源
  10. jenkins自动化构建iOS应用配置过程中遇到的问题