基本概念

1.进程

      定义:  进程就是一个程序在一个数据集上的一次动态执行过程。

  组成:  进程一般由程序、数据集、进程控制块三部分组成。

  程序:  我们编写的程序用来描述进程要完成哪些功能以及如何完成;

  数据集: 则是程序在执行过程中所需要使用的资源;

  进程控制块: 用来记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志

2.线程

       线程的出现是为了降低上下文切换的消耗,提高系统的并发性,并突破一个进程只能干一样事的缺陷,使到进程内并发成为可能。

  线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元

    组成:由线程ID、程序计数器、寄存器集合和堆栈共同组成。

  线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能。线程没有自己的系统资源

3.线程与进程的区别

  1. 线程是执行的指令集 , 进程是资源的集合
  2. 线程的启动速度要比进程的启动速度要快
  3. 两个线程的执行速度是一样的
  4. 进程与线程的运行速度是没有可比性的
  5. 线程共享创建它的进程的内存空间 , 进程的内存是独立的
  6. 两个线程共享的数据都是同一份数据 , 两个子进程的数据不是共享的 , 而且数据是独立的
  7. 同一个进程的线程之间可以直接交流 , 同一个主进程的多个子进程之间是不可以进行交流 , 如果两个进程之间需要通信 , 就必须要通过一个中间代理来实现
  8. 一个新的线程很容易被创建 , 一个新的进程创建需要对父进程进行一次克隆
  9. 一个线程可以控制和操作同一个进程里的其他线程 , 线程与线程之间没有隶属关系 , 但是进程只能操作子进程
  10. 改变主线程 , 有可能会影响到其他线程的行为 , 但是对于父进程的修改是不会影响子进程

4.同步和异步

        同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;

     异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。

       举个例子,打电话时就是同步通信,发短息时就是异步通信

5.并行和并发

        并行指系统具有处理多个任务(动作)的能力

       并发是指系统具有同时处理多个任务(动作)的能力

 6.阻塞与非阻塞

        阻塞调用是指调用结果返回之前,当前线程会被挂起(如遇到io操作)。函数只有在得到结果之后才会将阻塞的线程激活。

        非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前也会立刻返回,同时该函数不会阻塞当前线程

 

线程threading模块

import threading
import time

def run(n):         #定义线程要运行的函数
    print('task',n)
    time.sleep(2)

if __name__ == '__main__':
    t1 = threading.Thread(target=run,args=(1,))          #生成一个线程
    t2 = threading.Thread(target=run,args=(2,))
    t1.start()
    t2.start()

print('I am main thread')                #主线程

#这个进程里面有三个线程,1个主线程,t1,t2两个子线程
#子线程和主线程是同步开启的,主线程结束后,要等子线程全部结束后,进程才会关闭
函数调用

相关文章: