一、多任务的概念
       简单地说,就是操作系统可以同时运行多个任务。打个比方,你一边在用浏览器上网,一边在听MP3,一边在用Word赶作业,这就是多任务,至少同时有3个任务正在运行。还有很多任务悄悄地在后台同时运行着,只是桌面上没有显示而已。
      多核CPU已经非常普及了,但是,即使过去的单核CPU,也可以执行多任务。由于CPU执行代码都是顺序执行的,那么,单核CPU是怎么执行多任务的呢?答案就是操作系统轮流让各个任务交替执行,任务1执行0.01秒,切换到任务2,任务2执行0.01秒,再切换到任务3,执行0.01秒……这样反复执行下去。表面上看,每个任务都是交替执行的,但是,由于CPU的执行速度实在是太快了,我们感觉就像所有任务都在同时执行一样。真正的并行执行多任务只能在多核CPU上实现,但是,由于任务数量远远多于CPU的核心数量,所以,操作系统也会自动把很多任务轮流调度到每个核心上执行。

总结:
1、并发
     指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)
2、并行 
     指的是任务数小于等于cpu核数,即任务真的是一起执行的

二、线程

1、多线程代码演示

import threading
import time
def saySorry():
print("演示")
time.sleep(1)
if __name__ == "__main__":
for i in range(5):
t = threading.Thread(target=saySorry)
t.start() #启动线程,即让线程开始执行

2、查看线程数量

length = len(threading.enumerate())
print('当前运行的线程数为:%d'%length)

3、关于线程共享全局变量

  • 在一个进程内的所有线程共享全局变量,很方便在多个线程间共享数据
  • 缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全)
  • 如果多个线程同时对同一个全局变量操作,会出现资源竞争问题,从而数据结果会不正确

最新文章

  1. js获取网页中宽高度集合
  2. 【小白的CFD之旅】02 江小白
  3. 让未激活的win8.1不再跳出提示激活的窗口
  4. Linux内核零碎知识
  5. 使用mysqlbinlog工具进行基于位置或时间点的数据恢复
  6. python Debug 单步调试
  7. c++基础 之 面向对象特征一 : 继承
  8. 1、初识Activity
  9. K:java中properties文件的读写
  10. 模拟器配置使用Fildder进行抓包,包含Https+证书
  11. Android开发学习之路--Java和Js互相调用
  12. Chapter 1 Securing Your Server and Network(12):保护链接服务器
  13. 1.ActionBar
  14. C#实现焦点变色
  15. SQL里执行CLR c#代码
  16. Python全栈开发-执行字符串形式的语句和字符串形式的表达式方法(即exec和eval方法)
  17. reduce内置高阶函数求和
  18. 词云wordcloud类介绍&python制作词云图&词云图乱码问题等小坑
  19. News summary on C# and .NET
  20. GDB:从单线程调试到多线程调试(MFiX单步调试)

热门文章

  1. nginx 快速安装
  2. 通透,23 个问题 TCP 疑难杂症全解析
  3. 2.通过QOpenGLWidget绘制三角形
  4. Helium文档1-WebUI自动化-环境准备与入门
  5. Linux用户和组管理命令-用户属性修改usermod
  6. day73:drf:drf视图相关类&路由Routers&创建虚拟环境
  7. Java语言对对象采用的是引用传递还是按值传递?
  8. 八皇后C++版本
  9. 常用手册或官网的url
  10. 输出c字母图形