• 进程小知识


    1.Tcp粘包问题

    2.udp

    区别:不粘包,不可靠,传输效率高,适合数据量小的传输,不要求传输数据的顺序不需要建立链接

    使用场景,对速度要求高,但是对数据完整性要求不高,dns,对战类游戏

    网络编程:目前 无法并发处理多个客户端

    进程:

    一个正在运行中的程序称之为进程

    进程来自于操作系统

    在第三代操作系统中,诞生了多到技术

    多道技术是为了提高计算机资源的利用率,第三代以前是穿行执行任务的批量处理方式

    空间复用

    同一时间段内在内存中储存多个程序的数据

    内存区域要相互隔离,物理隔离,你是不可以随意访问的

    时间复用

    切换+保存

    当一个进程遇到IO操作时,就切换其他进程来执行,切换之前要记录当前运行的状态

    切换条件:

    遇到IO操作

    运行时间过长,时间片用完了

    什么时候要开启进程

    当执行一个任务时,执行时间过长,为了提高效率,我们就可以将这个任务交给子进程去完成

    Linux与Windows开启子进程的区别

    linux 会把数据完整copy给子进程 ,作为子进程的初始状态
    windows 会重新导入父进程的代码来获取需要数据,这样一来创建进程的代码又被执行了一次,造成递归创建进程
    所以要将开启子进程的代码放到 if __name__ == "__main__":中 保证创建进程的代码只被父进程执行
    如何开启子进程
    1.导入 multiprocessing 中的 Process
    实例化Process类 用target来指定要执行任务函数
    调用start来开启进程
    2.创建一个类,继承Process,覆盖run方法,将任务代码放到run中

    进程之间内存相互隔离

    僵尸进程 有害
    子进程结束了,父进程还在运行,子进程会占用pid 并且将保留最后的运行状态在内存中
    在linux中 父进程需要调用wait/waitpid来获取子进程的残留信息,并清理它
    python中已经封装好了 wait 操作不需要我们自己来清理

    如果出现很多僵尸进程
    清除僵尸进程的方法就是 杀死父进程

    孤儿
    父进程已经挂了 ,子进程还在运行,会被移交给操作系统来管理

    常用属性:
    join 父进程等待子进程运行结束 其实是提高子进程的优先级
    is_alive 是否存活
    getpid 获取自己的进程id
    name 进程的名字
    daemon
    terminate 终止这个子进程 有延迟
    start 启动进程 有延迟
    因为开启和关闭进程 都是操作系统来完成

    进程的状态
    运行 -io> 阻塞 -> 就绪态
    运行 -时间片用完了(运行时间过长)> 就绪态

    阻塞
    当程序遇到了IO操作,就进入了阻塞态
    非阻塞
    程序正在运行中,没有任何IO操作
    指的是程序的运行状态

    并行
    多个程序同时运行,是真正的同时执行,仅在多核中会出现

    并发
    多个事件同时发生了,看起来像是都在运行,本质上是切换执行

    程序员永恒的话题
    提高程序的效率 减少IO 力求尽可能多占用CPU
  • 相关阅读:
    composer配合github发布管理代码包
    PHP 静态变量的介绍
    Mysql 字段类型与查询类型不一致导致索引使用失败
    Markdown基础语法总结
    第一次加入博客园
    浅析DirectX11技术带给图形业界的改变(一) 浅析DirectX11技术带给图形业界的改变【转】
    centos7 安装包安装mysql8.0.18 rpm-bundle
    [JS]window.location获取url各项参数详解
    js正则表达式判断身份证号、邮箱和空字符串
    HTML5 Canvas绘制环形进度条
  • 原文地址:https://www.cnblogs.com/huanghongzheng/p/10967713.html
Copyright © 2020-2023  润新知