python-进程&线程&协程

老规矩,先理解概念

冯诺依曼体系:

  输入设备:键盘、鼠标

  存储器:内存

  输出设备:显示器、投影仪、打印机

程序:一个包含了代码片被编译后的文件

进程:系统通过解析程序文件加载到内存中的对象,进程是资源分配和调度的基本单位(分配cpu, 分配内存大小,它由系统进行调度),进程中包含指令(if, for…)、数据(变量,函数…)、线程(他也是线程的容器),他是操作系统结构的基础。

线程:进程中真正干活的人,线程是资源调度的最小单元,是程序执行流的最小单元,线程中包含线程id当前指令的指针(线程会切换,再次运行还能从阻塞的位置继续),寄存器集合(线程切换,这个线程执行的结果进行保存)、堆栈(栈是先进后出,执行一个函数要先生成函数对象->函数压栈->变量引用压栈->调用函数->弹出栈顶,线程执行的其实也就是函数中大代码片,从Thread的target参数就能看出来,它接收的是一个函数或则方法)

进程

注释:

1:每一个进程都认为自己独占所有的计算机硬件资源()

2: 进程间不共享数据(这里就要解决进程间通信的问题)

线程

注释:上边已经大致讲了一下线程,这里再说一下线程的特点

1:一个进程中可以有多个线程,同一个进程中的线程共享数据资源(这里需要学好python中的作用域,因为python是用作用域来控制进程中的资源。另外就是先做一个预热,既然共享资源就会出现线程安全的问题)

2:每一个线程拥有自己独立的堆栈。

3:线程的几种状态(就绪:处于没有结束,也没有在执行中间的一个状态。运行:正在执行代码片。阻塞:它在等待系统的处理结果,比如系统在执行IO。 终止:执行完成或则退出或则被取消)

4:python线程没有优先级、没有线程组的概念。

python-线程开发(threading库)

threading的属性和方法

current_thread()

main_thread()

active_count()

enumerate()

get_ident

Thread类->线程对象

Thread(target, name, args, kwargs)

Thread对象的方法

name

ident

is_alive()

启动: start()与run()(start:启动线程唯一的方法。 run:等价于普通的调用函数)

结束:python没有提供线程终止的方法(线程终止1:代码片中出现异常 2:线程执行完成  3:对于循环的代码片捕获到某个标记break了)

协程

猜你喜欢

转载自www.cnblogs.com/wjj-/p/11802330.html