python并发编程:多线程,多进程
Posted lancelotxly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python并发编程:多线程,多进程相关的知识,希望对你有一定的参考价值。
‘‘‘
多进程(线程)编程:
1. 进程和线程
2. 并发与并行
3. 同步和异步
4. 阻塞和非阻塞
5. 进程/线程的调度模型
‘‘‘ # 综述
‘‘‘
进程和线程:
1. 进程:
1) 是一个程序在数据集上的一次动态执行过程
2) 由程序, 数据集, 进程控制模块组成
2. 线程:
1) 是CPU的一个最小执行单元,
2) 线程的出现是为了降低进程间切换的消耗
3) 实现在一个进程内的并发
4) 由线程ID, 程序计数器, 寄存器集合, 堆栈组成
3. 进程和线程的关系:
1) 进程是线程的容器, 程序至少有一个进程, 一个进程至少有一个线程
2) 一个进程内的线程们共享进程资源, 线程几乎不拥有资源
3) 进程之间的资源不共享
4. 多进程/多线程的切换方式:
1) IO阻塞
2) 时间轮询
‘‘‘ # 进程和线程
‘‘‘
并发和并行:
1. 并发: 系统具有处理多个任务的能力,(可能不是并行, 如快速切换)
2. 并行: 系统具有‘同时‘处理多个任务的能力
3. 并发和并行的关系: 并行是并发的子集
‘‘‘ # 并发和并行
‘‘‘
同步和异步:
1. 同步: 当进程(线程)执行IO操作时, 没得到结果就等待
2. 异步: 当进程(线程)执行IO操作时, 不等待, 数据接收成功后, 再回来处理
3. 同步和异步时针对任务的调度方式而言(等待/不等待)
‘‘‘ # 同步和异步
‘‘‘
阻塞和非阻塞:
1. 阻塞: 当进程(线程)执行IO操作时, 该进程(线程)被挂起, 直到有结果时才被激活
2. 非阻塞: 当进程(线程)执行IO操作时, 该进程(线程)不会被挂起, 没有结果也返回
3. 阻塞和非阻塞时针对进程(线程)的调度(挂起/不挂起)
‘‘‘ # 阻塞和非阻塞
‘‘‘
进程(线程)的调度模型:
1. 进程(