Python中的多线程与协程:程序、线程、进程之间的关联关系

程序 Program

程序是是为了完成某种特定任务,用某种特定语言编写的一组指令的集合,简单来说就是我们编写完成的代码。

进程 Process

进程是值运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存空间,当我们使用迅雷工具,又启动了一个进程,操作系统将为迅雷分配新的内存空间
进程是程序的一次执行过过程,或者是正在运行的一个程序,是动态过程:有它自身的产生,存在和消亡的过程
例如可以查看一下windows中正在运行的任务有哪些,当前正在执行的程序就是进程

总结:在一个操作系统中,每个独立执行的程序都可以称为一个进程也就是正在运行的程序

线程thread

线程是由进程创建的,是进程的一个实体
一个进程可以拥有多个线程
单线程:同一个时刻,只允许执行一个线程
多线程:同一个时刻,可以执行多个线程,例如qq的多个聊天窗口
并发:同一个时刻,多个任务交替执行,造成一种貌似同时的错觉,简单来说,单核cpu实现的多任务就是并发。例如,一个人在开车的同时打电话,在直播的同时打字
并行:同一个时刻,多个任务同时执行,多核cpu可以实现并行processor处理器。例如两个人在车上,一个人在开车,一个人在打电话
同一个电脑上,并发和并行是可以同时存在的。例如下图,一个电脑由多个cpu

Python实现多线程(类似于高速公路上面有多条车道,车道有快慢,但互不影响)

线程类似与同时执行多个不同的程序,多线程运行有如下优点:

使用线程可以把占据长时间的程序中的任务放到后台去处理
程序的运行速度可能加快
在一些等待的任务实现上面例如用户的输入、文件读写和网络手法数据等,线程就会比较有用。在这种情况下我们可以释放一些珍贵的资源例如内存占用等等
每一个线程都有自己的一组cpu寄存器,称为线程的上下文,该上下文反映了线程上次运行该线程的cpu寄存器的状态
在其他线程正在运行的时候,线程可以展示搁置(也称为睡眠),这就是线程的退让。

在引入线程的操作系统中,则把线程作为调度和分配的基本单位,把进程作为资源拥有的基本单位。
进程是程序的一次执行,对应了代码加载,执行至完毕的一个完整过程或者说是程序在处理机中的一次运行,线程是进程执行过程中产生的多条执行线索,是比进程更小的执行单位

简述进程和线程的区别

程序是静态的,而进程是动态的
进程是程序的一个执行过程,程序的存在是永久的,而进程是为程序的一次执行而短暂存在的,进程有生命周期,有诞生,亦有消亡
一个进程可以包含若干程序的执行,而一个程序亦可以产生多个进程
进程具有创建其他进程的功能,被创建的进程称为子进程,从而构成进程家族
说明:任何一个程序需要首先调入内存才能执行。

简述线程的概念

线程是进程执行过程中产生的多条执行线索,是比进程单位更小的执行单位,线程在形式上同进程十分相似,都是用一个按序执行的语句序列来完成特定的功能,不同的是,线程没有入口,也没有出口,自身不能自动运行,必须栖身于某一个进程中,由进程触发执行,并且属于同一进程的线程共享该进程的资源。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容