惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
V
Visual Studio Blog
T
The Blog of Author Tim Ferriss
爱范儿
爱范儿
Vercel News
Vercel News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Y
Y Combinator Blog
Blog — PlanetScale
Blog — PlanetScale
D
DataBreaches.Net
美团技术团队
Microsoft Security Blog
Microsoft Security Blog
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
GbyAI
GbyAI
A
About on SuperTechFans
云风的 BLOG
云风的 BLOG
The Cloudflare Blog
宝玉的分享
宝玉的分享
V
V2EX
Microsoft Azure Blog
Microsoft Azure Blog

老董笔记

尚硅谷机构在哪?尚硅谷培训怎么样?靠谱吗-互联网IT百科 韩顺平介绍,传智讲师,开办泰牛,入尚硅谷等一系列-互联网IT百科 pandas多重索引标准样式(写入excel有空行)-互联网IT百科 cannot join with no overlapping index names-互联网IT百科 pandas多列变多行(即宽表变长表)melt和stack函数-互联网IT百科 pandas多行转多列(长表变宽表)pivot和unstack-互联网IT百科 Index contains duplicate entries, cannot reshape完美解决-互联网IT百科 single positional indexer is out-of-bounds-互联网IT百科 Can only compare identically-labeled Series objects-互联网IT百科 pandas transform用法详解(多个案例)-互联网IT百科 python四舍五入精确实现-互联网IT百科 pandas的groupby使用apply分组排序-互联网IT百科 index 0 is out of bounds for axis 0 with size 0-互联网IT百科 pandas分组过滤filter函数-互联网IT百科 联想Win10系统如何禁用触摸屏关闭触摸-互联网IT百科 groupby分组计算transform转换返回相同长度序列-互联网IT百科 brooks seo教程python教程,brooks seo教程网盘,布鲁seo资源-互联网IT百科 电脑右键文件夹一直转圈电卡死怎么回事-互联网IT百科 施琪嘉的心理成长课(荐)-互联网IT百科 百度SEO公司_SEO推广公司哪家好_SEO外包服务如何选-老董笔记 groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义函数-互联网IT百科 pandas的groupby单列多列分组聚合运算-互联网IT百科 DataFrameGroupBy对象及分组个数、分组大小、组名索引、组数据详解-互联网IT百科 pandas中groupby之Grouper and axis must be same length-互联网IT百科 pandas中groupby的分组原理-互联网IT百科 pandas的groupby的使用详解大全-互联网IT百科 openpyxl单元格自动换行强制换行Alignment(wrapText=True)-互联网IT百科 python教程全套(可就业)-互联网IT百科 联想win10系统CPU显示100%,电脑呼呼响怎么回事-互联网IT百科 如何自制CPU,CPU原理是怎么样的?-互联网IT百科
从宏观上彻底认识进程和线程-互联网IT百科
2020-09-22 · via 老董笔记

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

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

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

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

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

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

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

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

很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会