发布时间:2023-06-05 19:00
* 文本区域:存储处理器执行的代码
* 数据区域:存储变量或进程执行期间使用的动态分配的内存
* 堆栈:进程执行时调用的指令和本地变量
程序是指令与数据的有序集合,程序本身是没有生命的,只有CPU赋予程序生命时(CPU执行程序),它才能成为一个活动的实体,称为“进程”。
概括来说,进程就是一个具有独立功能的程序在某个数据集上的一次运行活动
并发:在操作系统中,某一时间段,几个程序在同一个CPU上运行,但在任意一个时间点上,只有一个程序在CPU上运行。
当有多个线程时,如果系统只有一个CPU,那么CPU不可能真正同时进行多个线程,CPU的运行时间会被划分成若干个时间段,每个时间段分配给各个线程去执行,一个时间段里某个线程运行时,其他线程处于挂起状态,这就是并发。并发解决了程序排队等待的问题,如果一个程序发生阻塞,其他程序仍然可以正常执行
并行:当操作系统有多个CPU时,一个CPU处理A线程,另一个CPU处理B线程,两个线程互相不抢占CPU资源,可以同时进行,这种方式成为并行。
并发与并行的区别
TCB包括:
协程是一种比线程更加轻量级的存在,最重要的是,协程不被操作系统内核管理,协程是完全由程序控制的。
协程的优势:
多进程 + 协程
的方式,能够充分利用CPU,获得极高的性能。yield
关键字 相当于是 暂停功能,程序运行到yield
停止,send函数可以传参给生成器函数,参数赋值给yield。
def customer():
while True:
number = yield
print(\"开始消费:\", number)
custom = customer()
next(custom)
for i in range(10):
print(\"开始生产:\", i)
custom.send(i)
结果: