python 多线程和多进程相关概念
2018-09-08 本文已影响0人
stay丶gold
python默认解释器是Cpython,内存管理不是线程安全的,所以Cpython有一个东西叫GIL,全局解释器锁。
*进程:每个应用程序至少有一个进程,每个进程至少有一个线程
-
python 多线程实际上底层是单核在多个线程上来回执行,在处理io或者下载等耗时操作时常用
-
而涉及到密集cpu计算的场景,则不建议使用多线程来回切换,而应该使用多进程,即多核进行运算
-
并发:是指系统具有处理多个任务的能力
-
并形:是指系统具有同时处理多个任务的能力,属于并发的子集
-
同步: 当系统执行IO操作的时候阻塞,等待数据(例如打电话,必须一直等着对方接听)
-
异步: 当系统执行IO操作的时候不阻塞,数据接受成功后再回来处理(例如发短信,等对方回了在看消息)
-
Lock:同步锁,只允许单个线程的执行数据
-
Rlock:内部实际上是计数器,当计数器大于0时,只有一个线程能够执行锁住的内容,当计数器为0时,线程开始抢锁,此时重新开始计数
-
Event:同步,通过set,clear,wait可以控制线程切换执行
-
daemon: 守护进程,跟随子线程跟随主线程退出而退出
-
Semaphore:信号量,多个线程锁,可以允许多个线程执行数据
-
queue:队列,线程安全的数据结构
-
进程Queue,进程队列,用于进程间通信
-
PIPE :双向管道 ,主进程和子进程间通信
-
Manager :不同进程数据共享
-
协程:本质上是一个线程,不是抢占式的程序,可以由用户控制切换时机,优点是没有切换的资源消耗和锁的概念