python

当前位置:首页 > python并发编程 > 当前文章

python并发编程

从宏观上彻底认识进程和线程

2020-09-22 83赞 python中国网
每篇文章努力于解决一个问题!python高级、python面试全套、操作系统经典课等可移步文章底部。

  进程和线程只是一个名词,人类喜欢制造很多概念去描述事物,虽然看起来非常高大上但是会掩盖事物本身导致大家认知起来有所困惑,进程和线程本身并不难,只要看完本文就会了解真相。

  进程和线程是操作系统的概念,要想理解进程与线程,就必须站在人类设计CPU设计操作系统的层面上。首先知道一个事实:计算机运行就是数据从磁盘载入内存,CPU从内存读取数据然后一顿运算。

  那么,如果计算机永远只有一条指令这样运转也没事!问题就是现在计算机是多任务的,比如你一遍下载苍老师的视频一边放着MP3同时还在QQ聊天,也就是说有很多不同功能的指令需要执行,那么他们之间该怎么协调呢?

  先干一个再干一个,听了一天的歌后片还没下下来岂不是很着急?如果一个程序需要在磁盘读取文件,而另一个程序只是计算两数相加,磁盘寻址的时间相对CPU来说是很长的,这段时间CPU没事干难道就等着去磁盘数据拿回来吗?这明显不科学,人类不会这么蠢的,人类会让她切换到别的程序执行。

  所以操作系统抽象出进程的概念去管理,而操作系统本身是人类编写的代码,操作系统源码层面实现了进程的定义和管理。不同功能的程序是不同的进程,分配不同的内存空间(QQ是个进程、迅雷是个进程...)。由此可见:进程是为了管理很多程序而诞生的一个称呼!一个程序可能会进行很多操作(QQ里面多个聊天窗口),所以慢慢从进程中又延伸出线程的概念。

  进程之间的切换该如何控制呢?这就涉及到操作系统对程序的调度。我们开机的那一刻操作系统的代码就运行起来了,我们后续所有的操作都是在操作系统的界面上进行的,所以你双击QQ的时候操作系统是知道你要运行qq,你打开文件的时候系统是知道你要打开文件,也就是说你运行哪些程序操作系统是心里有数的!这样各种程序运行起来后操作系统才能合理调度切换运行。

  其实这中间有个CPU时间片的概念,为了体现公平公正的原则,每个程序能交替执行,也就是说下载种子视频,播放音乐,QQ聊天来回切换,由于切换的时间非常短,人类是感受不出来的,于是就觉得是很多任务在同时执行。一个系统中所有的进程被分配到的时间片长短并不是相等的,因为操作系统的调度算法是很复杂的,比较出名的有银行家算法!

  无论是python还是php还是java等都可以实现多进程、多线程编程!具体到某个编程语言中,只要找到对应的模块,用该模块把一个函数做成线程或者进程使之一起运行起来就算是多进程、多线程编程了!至于锁、进程通信等都是后续延伸出来的概念,懂了基本的东西这些都好理解。

文章评论

从宏观上彻底认识进程和线程文章写得不错,值得赞赏