1. <mark id="s2zkv"><ol id="s2zkv"></ol></mark>
      <mark id="s2zkv"></mark>

        10.21 总结

        上节课回顾:

        1.粘包问题:

        1)无法确认发送数据的大小。

        2)短时间内发送多次数据量小并且间隔短的数据会一次性打包发送。

        2.struct:可以将一个很长的数据,压缩成固定的长度。

        3.解决粘包问题:

        1)通过struct模块弄一个报头,可以把字典压缩成一个报头,发送给服务端。

        2)服务端接收到报头后解压缩,获取真实字典长度,接收字典真实数据。

        注意:字典里可以携带即将发送的数据描述信息,以及数据的真实大小。

        4.上传大文件

        1)客户端发送字典到服务端

        2)服务端接收到字典后,利用字典内文件的名字,以该名字作为文件名。

        3)字典内包含着大文件的数据大小,然后循环一点一点接收。

        5.UDP

        --不需要建立连接

        --没有粘包问题

        --发送数据不需要等待返回接收成功

        --数据不安全,易丢失

        6.socketserver:

        基于socket模块封装而成,内置的theadingTCP(),可以支持多个用户同时连接服务端。

        今日内容:

        1.操作系统发展史

        1)穿孔卡片:一个计算机机房,一次只能被一个卡片使用。

        缺点:CPU利用率最低。

        2)联机批处理系统:支持多用户去使用一个计算机机房。

        3)脱机批处理系统:

        --高速磁盘:提高文件的读取速度。

        --优点:提高CPU的利用率。

        4)多道技术(基于单核情况下的研究):

        --单道:多个使用CPU时是串行。

        --多道技术:

        ? --空间上的复用:一个CPU可以提供给多个用户去使用。

        ? --时间上的复用:切换+保存状态

        ? -IO操作:input()/print()/time.sleep(3)

        ? --1)若CPU遇到IO操作,会立即将当前执行程序CPU使用权断开。

        ? 优点:CPU的利用率高。

        ? --2)若一个程序使用CPU的时间过长,会立即将当前执行程序CPU使用权断开。

        ? 缺点:程序的执行率低。

        --并发与并行:

        ? 并发:指的是看起来像同时在运行,多个程序不停切换+保存状态。

        ? 并行:真实意义上的同时运行,在多核(多个CPU)的情况下,同时执行多个程序。

        2.进程

        --程序与进程

        ? --程序:一堆代码。

        ? --进程:一堆代码运行的过程。

        --进程调度:

        ? 当代操作系统调整:时间片轮转法+分级反馈队列

        创建进程的两种方式:

        from multiprocessing import Processs
        import time
        '''
        创建进程方式一:
        '''
        #定义一个任务
        def task(name):
            print(f'{name}的任务开始执行')
            time.sleep(1)
            print(f'{name}的任务已经结束')
            
        if __name__=='__main__':
            #target=执行函数的地址
            p=Process(target=task,args=('jason',))
            #向操作系统提交创建进程的任务
            p.start() 
            print('主进程')
            
        '''
        windows:创建子进程,windows会将当前父进程代码重新加载执行一次。
        linux/mac:会将当前父进程代码重新拷贝一份,再去执行。
        '''
        #创建进程方式二:
        #1.自定义一个类,并继承Process
        class MYProcess(Process):
            #父类的方法:
            def run(self):
                print('任务开始执行')
                time.sleep(1)
                print('任务已经结束')
                
         if __name__=='__main__':
            p=MYProces()
            p.start()
            print('主进程')

        ? 1)先来先服务调度:

        ? a,b程序,若a程序先来,先占用CPU。

        ? 缺点:程序a先使用,程序b必须等待程序a使用CPU结束后才能使用。

        ? 2)短作业优先调度:

        ? a,b程序,谁用的时间短,先优先调度使用CPU。

        ? 缺点:若程序a使用时间最长,有N个程序使用时间短,必须等待所有用时短的程序结束后才能使用。

        ? 3)时间片轮转法:CPU执行的时间1秒中,加载N个程序,要将1秒等分成多N个时间片。

        ? 4)分级反馈队列

        ? 将执行优先分为多层级别。

        ? -1级:优先级最高。

        ? -2级:优先级第二,以此类推。

        ? -3级:

        --进程的三个状态:

        ? --就绪态:所有进程创建时都会进入就绪态,准备调度。

        ? --运行态:调度后的进程,进入运行态。

        ? --阻塞态:

        ? 凡是遇到IO操作的进程,都会进入阻塞态。

        ? 若IO结束,必须重新进入就绪态。

        ? --同步和异步:指的是提交任务的方式。

        ? -同步:若有两个任务需要提交,在提交第一个任务时,必须等待该任务执行结束,才能继续提交并执行第二个任务。

        #同步演示
        import time
        def test():
            #IO操作
            #time.sleep(3)
            
            #计算操作
            num=1
            for line in range(2):
                num+=1
        if __name__=='main':
            test()
            print('hello 臭弟弟')

        ? -异步:若有两个任务需要提交,在提交第一个任务时,不需要原地等待,立即可以提交并执行第二个任务。

        --阻塞与非阻塞:

        ? --阻塞:阻塞态,遇到IO一定会阻塞。

        ? --非阻塞:就绪态,运行态。

        最大化提高CPU的使用率:尽可能减少不必要的IO操作。

        --进程号回收的两种条件:

        ? 1.join,可以回收子进程与主进程。

        ? 2.主进程正常结束,子进程与主进程也会被回收。

        join方法:用来告诉操作系统,让子进程结束后,父进程再结束。

        from multiprocessing import Processs
        import time
        
        def task(name,n):
            print(f'{name}的任务开始执行')
            time.sleep(n)
            print(f'{name}的任务已经结束')
            
        if __name__=='__main__':
            #target=执行函数的地址
            p1=Process(target=task,args=('哥哥',1))
            p2=Process(target=task,args=('弟弟',2))
            p3=Process(target=task,args=('妹妹',3))
            #向操作系统提交创建进程的任务
            p1.start() 
            p2.start() #告诉操作系统,开启子进程
            p3.start() 
            
            p1.join()  #告诉操作系统,等子进程结束后,父进程再结束
            p2.join()
            p3.join()
            print('主进程')
            
        运行结果:
        弟弟 start...
        哥哥 start...
        妹妹 start...
        哥哥 over..
        弟弟 over..
        妹妹 over..
        主进程

        3.僵尸进程与孤儿进程(了解):

        僵尸进程:指的是子进程已经结束,但PID号还存在,未销毁。

        缺点:占用PID号,占用操作系统资源。

        孤儿进程:指的是子进程还在执行,但父进程意味结束。

        操作系统优化机制:提供一个福利院,帮你回收没有父亲的子进程。

        4.守护进程:

        指的是主进程结束后,该主进程产生的所有子进程跟着结束,并回收。

        from multiprocessing import Process
        from multiprocessing import current_process
        import time
        
        def task(name):
        
            print(f'{name} start...', current_process().pid)
            time.sleep(5)
            print(f'{name} over..',current_process().pid)
            print(f'管家{name}')
            
        if __name__=='main':
            p1=Process(target=task,args=('弟弟',))
            
            #添加守护进程参数
            p1.daemon=True  #True代表该进程是守护进程
            p1.start()
            
            print(f'渣男死了...')
            
        运行结果:渣男死了...

        5.进程间数据是相互隔离的:

        主进程与子进程会产生各自的名称空间。

        from multiprocessing import Process
        x=100
        
        def func():
            print('执行func函数...')
            global x
            x=200
        if __name__='__mian__':
            p=Process(target=func)
            p.start()
            print(x)
            print('主')
            
        运行结果:
        100
        主
        执行func函数...

        6.进程对象的属性

        '''
        current_process().pid:获取子进程号
        os.getpid():获取主进程PID号
        cmd中查看进程号:tasklist|findstr 进程号
        
        进程号回收的两种条件:
            1.join,可以回收子进程与主进程。
            2.主进程正常结束,子进程与主进程也会被回收。
        os.getppid()
        '''
        from multiprocessing import Process
        from multiprocessing import current_process
        
        import os  #与操作系统交互
        import time
        
        def task(name):
            print(f'{name} start ..',current_process().pid)
            time.sleep(1)
            print(f'{name} over..',current_process().pid)
        
        if __name__ == '__main__':
            p=Process(target=task,args=('臭弟弟',))
            p.start()  #告诉操作系统。开启子进程
        
            #判断子进程是否存活
            print(p.is_alive())
        
            #直接告诉子进程,终止子进程
            p.terminate()
            time.sleep(0.1)
        
            #判断子进程是否存活
            print(p.is_alive())
        
            p.join()  #让操作系统等子进程结束后再结束父进程。
            print('主进程',os.getpid())
            print('主主进程',os.getppid())
            time.sleep(10)
            
        运行结果:
        True
        False
        主进程 6216
        主主进程 7808
        相关文章
        相关标签/搜索
        每日一句
          每一个你不满意的现在,都有一个你没有努力的曾经。
        公众号推荐
           一个历史类的公众号,欢迎关注
        一两拨千金
        最准三码中特2020年香港六合马会开奖结果现场直播开奖历史资料记录在线查询网二四六天天好彩免费资料大全 江阴市| 汉中市| 宝山区| 大悟县| 扬州市| 璧山县| 曲靖市| 福鼎市| 剑河县| 嫩江县| 内丘县| 庆元县| 邵东县| 环江| 偏关县| 樟树市| 牡丹江市| 炎陵县| 宿州市| 堆龙德庆县| 石河子市| 汉源县| 沿河| 南城县| 扶绥县| 通化县| 金溪县| 天柱县| 金阳县| 广昌县| 依兰县| 鄂尔多斯市| 万盛区| 喀什市| 重庆市| 牙克石市| 高阳县| 岳普湖县| 于都县| 永善县| 米脂县| 六枝特区| 陇南市| 习水县| 淮滨县| 玉山县| 临海市| 穆棱市| 额敏县| 安顺市| 阿拉善右旗| 汉源县| 凌云县| 乌海市| 德惠市| 邓州市| 千阳县| 区。| 大埔区| 长泰县| 玛沁县| 夏河县| 南华县| 长沙县| 昌平区| 阿合奇县| 手机| 政和县| 武宁县| 北碚区| 增城市| 洪雅县| 思茅市| 广宁县| 新兴县| 菏泽市| 鄂温| 贵阳市| 河东区| 黑山县| 祁门县| 岗巴县| 夏河县| 海城市| 伽师县| 刚察县| 焉耆| 金门县| 黑河市| 大姚县| 杭州市| 澜沧| 芦山县| 酉阳| 陆川县| 河池市| 建平县| 永定县| 延寿县| 玉环县| 大安市| 永春县| 图木舒克市| 宁夏| 新闻| 观塘区| 民权县| 景宁| 武陟县| 伊吾县| 突泉县| 海兴县| 芦溪县| 孝昌县| 水城县| 江山市| 当阳市| 蒙城县| 康乐县| 芜湖县| 山阳县| 黄石市| 平安县| 盐城市| 乐至县| 固安县| 台州市| 武陟县| 泰安市| 南城县| 淄博市| 闽清县| 铜陵市| 晋宁县| 华坪县| 乌海市| 崇明县| 浮梁县| 北海市| 独山县| 普定县| 横山县| 图木舒克市| 都昌县| 修水县| 宁乡县| 濮阳县| 农安县| 股票| 西安市| 建平县| 海口市| 吉木萨尔县| 乐陵市| 毕节市| 同仁县| 方山县| 正阳县| 应用必备| 株洲县| 唐河县| 本溪市| 巨鹿县| 神木县| 双峰县| 孙吴县| 勐海县| 巴彦淖尔市| 焉耆| 依安县| 邹平县| 桐城市| 澄迈县| 揭东县| 仙游县| 舒城县| 曲沃县| 贡山| 温泉县| 施秉县| 宁海县| 同德县| 会泽县| 巴彦县| 台山市| 昭通市| 宝清县| 汉川市| 正安县| 肃北| 盐池县| 黔西| 建阳市| 克山县| 晴隆县| 贵溪市| 观塘区| 胶南市| 武邑县| 道孚县| 江门市| 天气| 台中市| 安吉县| 永和县| 丰镇市| 沂南县| 肥城市| 临沭县| 万载县| 凤台县| 保德县| 林周县| 龙南县| 江华| 珲春市| 易门县| 法库县| 建始县| 江孜县| 平遥县| 肥东县| 宁化县| 朝阳区| 陇川县| 赤壁市| 绥棱县| 恭城| 丰台区| 登封市| 曲阳县| 新田县| 碌曲县| 蓬安县| 华阴市| 凌海市| 成武县| 鱼台县| 扶沟县| 南通市| 沁源县| 滦平县| 盐源县| 和平县| 抚顺市| 长沙市| 灵武市| 富锦市| 大余县| 马山县| 宝鸡市| 庄浪县| 泽普县| 鄂温| 金乡县| 盱眙县| 清原| 介休市| 教育| 昌邑市| 太仆寺旗| 安泽县| 枣阳市| 喀喇沁旗| 东光县| 竹山县| 武功县| 威信县| 平远县| 喀什市| 环江| 临清市| 濮阳县| 平邑县| 枞阳县| 孟连| 灵山县| 鞍山市| 长沙市| 水富县| 广丰县| 永靖县| 汾西县| 白城市| 武汉市| 临颍县| 普格县| 治县。| 深州市| 万全县| 昭觉县| 溧阳市| 楚雄市| 黑龙江省| 大田县| 曲靖市| 桦南县| 南雄市| 隆德县| 肇庆市| 杂多县| 镇江市| 建阳市| 松潘县| 封开县| 蒙山县| 兰溪市| 和硕县| 华容县| 广德县| 阳原县| 宁阳县| 称多县| 新安县| 宝鸡市| 庄浪县| 两当县| 陕西省| 横山县| 讷河市| 营口市| 芦山县| 安福县| 临邑县| 凤阳县| 洮南市| 岚皋县| 临颍县| 陈巴尔虎旗| 福贡县| 仁布县| 翁牛特旗| 沁源县| 滨州市| 万山特区| 郴州市| 东乡族自治县| 邯郸市| 高碑店市| 泸定县| 古田县| 青龙| 湟中县| 永泰县| 贵德县| 玉环县| 利川市| 赤水市| 廊坊市| 海安县| 塔河县| 鄂伦春自治旗| 玛多县| 民和| 漳州市| 龙川县| 辽宁省| 台南县| 宾川县| 邓州市| 湾仔区| 佳木斯市| 枣庄市| 丘北县| 斗六市| 垣曲县| 苏尼特右旗| 兴宁市| 荥经县| 怀化市| 清丰县| 普兰店市| 岐山县| 松原市| 黔东| 孙吴县| 达孜县| 会昌县| 炎陵县| 砚山县| 治多县| 台中市| 嘉鱼县| 洞口县| 沙洋县| 岱山县| 古交市| 克拉玛依市| 张家口市| 怀化市| 长汀县| 出国| 嵊州市| 林西县| 红原县| 山阴县| 耒阳市| 蒲城县| 博湖县| 玉树县| 鄯善县| 革吉县| 镇康县| 老河口市| 石台县| 鹿泉市| 合江县| 长岛县| 山西省| 桐柏县| 扎鲁特旗| 黄梅县| 容城县| 潜山县| 囊谦县| 阜新市| 福安市| 邵阳县| 三原县| 竹北市| 罗城| 贵阳市| 上高县| 容城县| 英山县| 伊金霍洛旗| 喀喇沁旗| 远安县| 宁夏| 喜德县| 顺平县| 正镶白旗| 徐汇区| 闽清县| 珲春市| 遂溪县| 滁州市| 南陵县| 页游| 余干县| 东阳市| 奇台县| 珠海市| 徐水县| 呼图壁县| 云霄县| 碌曲县| 凌源市| 胶州市| 宣恩县| 南宁市| 西乡县| 宣汉县| 沈丘县| 永安市| 五寨县| 侯马市| 天祝| 金湖县| 阿坝| 芜湖县| 洱源县| 二连浩特市| 喀什市| 四平市| 鲁山县| 琼结县| 壶关县| 南陵县| 瑞昌市| 万源市| 县级市| 乐昌市| 丹阳市| 乌审旗| 阜新| 彭泽县| 马公市| 永福县| 磴口县| 团风县| 哈密市| 洪泽县| 湘潭县| 陵水| 英吉沙县| 广宗县| 玛曲县| 连山| 都安| 萨嘎县| 工布江达县| 清水县| 炎陵县| 福安市| 肃宁县| 廉江市| 双城市| 呼和浩特市| 天水市| 连平县| 聂拉木县| 大英县| 平塘县| 桑日县| 大理市| 溆浦县| 乐平市| 鄂伦春自治旗| 页游| 邳州市| 天柱县| 南康市| 宜兰市| 永顺县| 佛教| 乌拉特后旗| 太康县| 鸡泽县| 甘孜县| 红原县| 宣恩县| 周至县| 屯昌县| 临夏市| 儋州市| 铜陵市| 社会| 水富县| 揭东县| 朝阳县| 珠海市| 大同县| 平潭县| 南华县| 静海县| 滁州市| 修武县| 万山特区| 天峻县| 岚皋县| 清涧县| 离岛区| 晋宁县| 南乐县| 武义县| 辽宁省| 康乐县| 兰考县| 河西区| 阳信县| 民丰县| 香河县| 张家口市| 稻城县| 石河子市| 藁城市| 辽阳县| 浮梁县| 定襄县| 中西区| 博客| 霍山县| 石林| 西华县| 义乌市| 岗巴县| 上高县| 乌鲁木齐县| 孝感市| 柞水县| 呼图壁县| 荃湾区| 湟中县| 平武县| 永顺县| 甘南县| 峨边| 尉氏县| 兴国县| 长治市| 天柱县| 普陀区| 游戏| 永吉县| 澎湖县| 乌兰浩特市| 永寿县| 社会| 西盟| 满城县| 铁岭市| 庆元县| 普陀区| 阿城市| 西乌珠穆沁旗| 上高县| 宁德市| 左云县| 盐源县| 静安区| 拉萨市| 丹东市| 靖西县| 贵定县| 台东市| 仪征市| 增城市| 沧源| 达日县| 商南县| 江川县| 金沙县| 茶陵县| 萍乡市| http://www.jx1870hitv.fun http://www.hz0j0r5vo.fun http://wap.hz0j1r7vo.fun http://m.hz0j3r3vo.fun http://hz0j2r3vo.fun http://m.jx1870landv.fun http://m.jx1870forwardv.fun http://jx1870issuev.fun http://m.jx1870greyv.fun http://www.jx1870knowv.fun http://wap.hz0j3r9vo.fun http://m.jx1870leadv.fun http://jx1870labourv.fun http://wap.hz0j2r8vo.fun http://m.hz0j4r2vo.fun http://www.jx1870feev.fun http://jx1870influencev.fun http://hz0j3r5vo.fun