Python中的线程和进程和协程

什么是线程、进程?

什么是进程?

1. 进程是资源分配最小单位
2. 当一个可执行程序被系统执行(分配内存等资源)就变成了一个进程

3. 程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,这种执行的程序就称之为进程
4. 程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念
3. 在多道编程中,我们允许多个程序同时加载到内存中,在操作系统的调度下,可以实现并发地执行。
4. 进程的出现让每个用户感觉到自己独享CPU,因此,进程就是为了在CPU上实现多道编程而提出的。
5. 进程之间有自己独立的内存,各进程之间不能相互访问
6. 创建一个新线程很简单,创建新进程需要对父进程进行复制

进程的优点

提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率
(多道编程概念
多道编程: 在计算机内存中同时存放几道相互独立的程序,他们共享系统资源,相互穿插运行
单道编程: 计算机内存中只允许一个的程序运行)

进程的缺点

  1. 进程只能在一个时间干一件事。
  2. 进程在执行的过程中如果阻塞,即使进程中有些工作不依赖于输入的数据,也将无法执行(例如等待输入,整个进程就会挂起)

进程间互相访问数据的四种方法

注:不同进程间内存是不共享的,所以互相之间不能访问对方数据

  1. 利用Queues实现父进程到子进程(或子进程间)的数据传递
  2. 使用管道pipe实现两个进程间数据传递
  3. Managers实现很多进程间数据共享
  4. 借助redis中间件进行数据共享

什么是线程?

1. 线程是操作系统调度的最小单位它被包含在进程之中,是进程中的实际运作单位
2. 进程本身是无法自己执行的,要操作cpu,必须创建一个线程,线程是一系列指令的集合
3. 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位

4. 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
5. 无论你启多少个线程,你有多少个cpu, Python在执行的时候会淡定的在同一时刻只允许一个线程运行
6. 同一个进程中的各线程可以相互访问资源,线程可以操作同进程中的其他线程,但进程仅能操作子进程

进程和线程的区别

  1. 进程包含线程
  2. 线程共享内存空间
  3. 进程内存是独立的(不可互相访问)
  4. 进程可以生成子进程,子进程之间互相不能互相访问(相当于在父级进程克隆两个子进程)
  5. 在一个进程里面线程之间可以交流。两个进程想通信,必须通过一个中间代理来实现
  6. 创建新线程很简单,创建新进程需要对其父进程进行克隆。
  7. 一个线程可以控制或操作同一个进程里面的其它线程。但进程只能操作子进程。
  8. 线程可以帮助应用程序同时做几件事

什么是协程?

协程,又称微线程,纤程

作用

在执行一个函数的时候,可以随时停止,去执行另一个函数,然后中断再去执行第一个函数,类似于多线程,但协程只有一个线程在执行

协程的优势

协程可以很完美的处理IO密集型的问题,但是处理cpu密集型并不是他的长处。要充分发挥CPU的性能,可以结合多进程+多线程的方式。

猜你喜欢

转载自blog.csdn.net/m0_47202787/article/details/106462586