您的位置:首页 > 编程语言 > Python开发

Python3之线程、进程、协程

2018-08-23 21:09 441 查看

线程、进程、协程

定义

进程(系统级别的并发):计算机中一个程序在一个数据集上一次动态执行过程,主要包含三部分内容:
程序:描述进程的功能以及处理流程;
数据集:功能处理过程中需要的资源数据;
进程控制块(PCB):严格控制进程执行过程中的各种状态。

通俗来说,一个进程就是计算机上正在运行的一个程序;

  一个软件程序要运行,需要将软件依赖的数据加载到内存中,通过 CPU 进行运算并按照程序定义的逻辑结构进行流程控制,知道数据处理完成后程序退出!
在程序实际执行过程中,进程只是分配需要的数据资源,是程序的主体,在程序运行时真正运行的是线程,每个进程至少会有一个线程。

线程(微进程:实现了进程内部的并发):计算机中程序运行的实际执行者就是线程,线程又称为轻量级进程,是一个 CPU 的执行单元,每个进程至少会有一个主线程用于执行程序。

协程(微线程:实现了单线程下的并发):又称微线程,纤程。英文名Coroutine。

线程和进程对比如下:

*一个进程可以有多个线程,但是至少有一个主线程;
*一个线程只能属于一个进程;
*一个进程中多个线程,可以共享进程中提供的数据;
*CPU 运算分配给线程,CPU 上执行运算的是线程;
*线程是最小的运行单元,进程是最小的资源管理单元。

应用场景

多进程:应用于中大型项目开发过程中,对于数据管理更加严格的项目并发操作, 通过进程管理数据,通过线程运行任务,完成并发处理数据。

多线程:微进程,应用于多任务处理机制,对于数据的操作并不是管理严格
如:如果出现了一个大文件的复制粘贴功能-> 多线程效率非常高;
如果出现了一个单路大数据量的的运算功能-> 多线程不如单线程。

Django web framework
多人同时访问网站-> 网站并发量-> 多线程的方式实现;
每个线程,会服务一个访问数据请求。

协程:微线程,应用于多任务处理机制,对于数据的处理更加的松散!
协程的方式,对于注重多任务处理机制的软件,更加的友好!性能处理更加优秀!

Tornado web framework
多人同时访问网站-> 网站并发量-> 事件轮询机制[epoll/Kqueue系统内核]
单线程多任务事件轮询机制_>并发处理效率,> Django

串行、并行、并发

串行:就是传统意义上的同步、顺序的意思,按照一定的执行步骤顺序执行每个环节。
并行:就是传统意义上的异步、同时的意思,同时执行接受到的多个任务。
并发:同时接收到多个任务,同时执行多个任务,但是具体到某个时刻~只是在执行一个任务,只是在很短时间内在多个任务之间切换,模拟形成了多个任务同时执行的现象。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: