码迷,mamicode.com
首页 > 编程语言 > 详细

python-线程一(常识)

时间:2020-03-28 16:28:49      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:就是   多线程   效率   退出   不同   不能   一个   并且   操作系统   

问题1、单进程、线程、协程的区别?

  单进程:操作系统分配资源的最小单位,是一个程序的动态执行,有各自的地址空间,不同进程中使用的变量是各自独立,且互相不能访问的,进程中的变量存在各自的地址空间中,互相禁止访问。(由操作系统调度)

  线程:是cpu运行的最小单位,进程至少会有一个线程,也可以多个线程,他们共享一个进程的地址空间,所有的线程使用的变量是共享的,一个进程中的所有线程默认都是可以访问。每个线程都会被分配一个任务函数,如果执行完了,线程就会退出,也会有阻塞的状态。(由操作系统调度)

  协程:本质就是单线程的程序,执行不同的任务函数。(由程序员去进行调度)

  注意:在python中多线程是不能垮cpu运行的,比如说一个进程里面有多个线程,只能由那1个cup来执行这多个线程,不能由其他cpu来执行

 

问题2:多进程、多线程、协程的使用场景?

  多进程使用场景:(推荐)需要执行多个cpu密集型的任务:会比较占用操系统的资源,多进程切换,需要cpu切换上下文(进程的存储各类信息的结构),切换效率比较低,占用cpu资源。

  多线程使用场景:(推荐)执行多个io(本地操作文件、网络数据传输)密集型的任务:所有线程共享一个进程的所有资源,切换的时候不需要cpu切换进程的上下文,效率高,占cpu资源很少,占操作系统资源也很少,多线程的情况下,因为只有一个cpu在执行,其他线程都是需要排队等候,所以没有真正并行效果。

  协程:推荐执行多个io任务的情况,本质就是单线程,效率比多线程差不多,资源占用比多线程要更少,切换效率很高,且编程容易,不需要考虑锁,出错的可能性比较低。

 

问题3:并发和并行的区别?

  并发是指一个时间段内同时运行,表示的是一个区间,而并行是指在同一个时间点上都在运行,是一个点,并且并发在同一时间点上只能有一个程序在运行。

 

python-线程一(常识)

标签:就是   多线程   效率   退出   不同   不能   一个   并且   操作系统   

原文地址:https://www.cnblogs.com/su-sir/p/12587837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!