day02-多任务(进程和协程)
2024-10-18 19:58:33
一、多任务的概念
简单地说,就是操作系统可以同时运行多个任务。打个比方,你一边在用浏览器上网,一边在听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、关于线程共享全局变量
- 在一个进程内的所有线程共享全局变量,很方便在多个线程间共享数据
- 缺点就是,线程是对全局变量随意遂改可能造成多线程之间对全局变量的混乱(即线程非安全)
- 如果多个线程同时对同一个全局变量操作,会出现资源竞争问题,从而数据结果会不正确
最新文章
- js获取网页中宽高度集合
- 【小白的CFD之旅】02 江小白
- 让未激活的win8.1不再跳出提示激活的窗口
- Linux内核零碎知识
- 使用mysqlbinlog工具进行基于位置或时间点的数据恢复
- python Debug 单步调试
- c++基础 之 面向对象特征一 : 继承
- 1、初识Activity
- K:java中properties文件的读写
- 模拟器配置使用Fildder进行抓包,包含Https+证书
- Android开发学习之路--Java和Js互相调用
- Chapter 1 Securing Your Server and Network(12):保护链接服务器
- 1.ActionBar
- C#实现焦点变色
- SQL里执行CLR c#代码
- Python全栈开发-执行字符串形式的语句和字符串形式的表达式方法(即exec和eval方法)
- reduce内置高阶函数求和
- 词云wordcloud类介绍&;python制作词云图&;词云图乱码问题等小坑
- News summary on C# and .NET
- GDB:从单线程调试到多线程调试(MFiX单步调试)