多任务


进程、线程对比

目标

知道进程和线程关系及优缺点

1. 功能对比

进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ

线程,能够完成多任务,比如 一个QQ中的多个聊天窗口

2. 定义对比

进程是系统进行资源分配基本单位,每启动一个进程操作系统都需要为其分配运行资源。

线程是运行程序中的一个执行分支,是CPU调度基本单位。

总结:进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位

3. 关系对比

线程是依附在进程里面的,没有进程就没有线程

一个进程默认提供一条线程,进程可以创建多个线程

4. 区别

进程之间不共享全局变量

线程之间共享全局变量,但是要注意资源竞争的问题,解决办法: 互斥锁或者线程同步

创建进程的资源开销要比创建线程的资源开销要大

进程是操作系统资源分配的基本单位,线程是CPU调度的基本单位

线程不能够独立执行,必须依存在进程中

多进程开发比单进程多线程开发稳定性要强

优缺点

多进程:

优点:可以用多核

缺点:资源开销大

多线程:

优点:资源开销小

缺点:不能使用多核

5. 进程的状态

工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致了有了不同的状态

就绪态:运行的条件都已经慢去,正在等在cpu执行

执行态:cpu正在执行其功能

等待态:等待某些条件满足,例如一个程序sleep了,此时就处于等待态

注意:创建子进程其实是对主进程进行拷贝,进程之间相互独立,访问的全局变量不是同一个,所以进程之间不共享全局变量

主进程会等待所有的子进程执行完成程序再退出

线程之间执行是无序的

主线程会等待所有的子线程结束后才结束

现实生活中的公司可以理解成是一个进程,公司提供办公资源(电脑、办公桌椅等),真正干活的是员工,员工可以理解成线程。

注意:一个程序至少有一个进程,一个进程至少有一个线程,多进程可以完成多任务.

可以使用multiprocessing模块的Queue实现多进程之间的数据传递,Queue本身是一个消息列队程序

从队列取值使用get方法,向队列放入值使用put方法

你可能感兴趣的:(多任务)