多任务


进程、线程对比

目标

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

1. 功能对比

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

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

2. 定义对比

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

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

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

3. 关系对比

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

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

4. 区别

进程之间不共享全局变量

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

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

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

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

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

优缺点

多进程:

优点:可以用多核

缺点:资源开销大

多线程:

优点:资源开销小

缺点:不能使用多核

5. 进程的状态

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

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

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

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

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

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

线程之间执行是无序的

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

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

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 系统编程:多任务编程 1. 线程: 可以理解成执行代码的分支,线程是执行对应的代码的 1.1 线程的工作原理: ...
    梦醒家先生阅读 4,655评论 2 0
  • 什么叫“多任务”?就是操作系统可以同时运行多个任务。(至少同时有3个任务正在运行) 单核CPU如何执行多任务? 多...
    Khada阅读 3,408评论 0 0
  • 一、总体内容 1.1、进程、程序的概念 1.2、使用 Process 完成多进程- multiprocessing...
    IIronMan阅读 4,114评论 0 1
  • 1. 简介 用户打开浏览器,其实就是打开了浏览器应用程序。那么什么是程序呢?我们常说浏览器是多线程的,JS 是单线...
    love丁酥酥阅读 8,892评论 0 6
  • “玧其啊~闵玧其!哈哈哈哈……”你高声呼喊着他的名字,手里的啤酒罐又要见底。 “别喊了。我不是在这吗?”闵玧其手上...
    YunkiCho阅读 3,520评论 1 2