pythonNet 05 进程

news/2024/7/9 16:56:22 标签: 运维, epoll, 数据结构与算法

前情回顾
1.epoll模型 : 效率高 , 触发方式更多
2.本地套接字  AF_UNIX  本地两个进程间的消息通信
3.多任务编程
      * 并行 和 并发
      * 进程 线程
4. 多进程编程
       时间片  PCB   PID  父子进程  优先级 进程特征
       进程状态: 就绪态  运行态  等待态
5. ps -aux   ps  -ajx    pstree  top   nice
6. os.fork()
7. os.getpid()  os.getppid()
   os._exit()   sys.exit()
8. 孤儿进程和僵尸进程
****************************************************

如何避免僵尸进程产生
    * 处理子进程退出状态
 pid,status = os.wait()
 功能 :在父进程中阻塞等待处理子进程退出
        返回值: pid 退出的子进程的PID号
          status  获取子进程退出状态
       
 pid,status = os.waitpid(pid,option)
 功能 :在父进程中阻塞等待处理子进程退出
 参数 : pid  -1 表示等待任意子进程退出
              >0 表示等待对应PID号的子进程退出
  option  0 表示阻塞等待
          WNOHANG 表示非阻塞
        返回值: pid 退出的子进程的PID号
          status  获取子进程退出状态
 
 waitpid(-1,0)  ===> wait()

    * 让父进程先退出
       1. 父进程创建子进程等待子进程退出
       2. 子进程创建二级子进程后立即退出
       3. 二级子进程称为孤儿,和原来的父进程各自执行    事件

聊天室

功能 : 类似qq群聊
1. 进入聊天室需要输入姓名,姓名不能重复
2. 有人进入聊天室会向其他人发送通知
   xxx 进入了聊天室
3. 一个人发消息,其他人会收到消息
   xxx 说 : xxxxxxxx
4. 某人退出聊天室,其他人也会收到通知
   xxx 退出了聊天室
5. 管理员喊话 服务端发送消息所有的客户端都就收到
   管理员说 :xxxxxx

功能模型 : 转发
需要的技术 : 套接字通信 udp套接字
用户存储 : 字典或列表
消息收发的随意性 : 多进程

代码设计
1.封装 将每个功能封装为函数
2.接口测试 (每实现一步就测试一步)

代码编写流程
搭建网络连接 --》 创建多进程---》每个进程功能编写--》项目功能模块实现

进入聊天室
客户端 : 输入姓名  将信息发给服务端(L name)
          等待服务端回复    根据回复判断是否登录成功

服务端 : 接收请求信息  判断请求类型 
          判断用户名是否存在   如果存在回复不能登录
   如果不存在回复可以登录并插入到数据结构
          发送通知给其他用户

聊天
客户端 : 创建父子进程   发送聊天请求/接收聊天信息
服务端 : 接收请求信息  将消息转发给其他客户端

退出

管理员消息

multiprocessing 模块创建进程

1. 需要将要执行的事情封装为函数
2. 使用multiprocessing模块中Process类创建进程对象
3. 通过对象属性设置和Process的初始化函数对进程进行设置,绑定要执行的函数
4. 启动进程,会自动执行进程绑定的函数
5. 完成进程的回收


Process()
功能 : 创建进程对象
参数 : name  进程名称  Process-1
        target  绑定函数
 args  元组  给target函数按照位置传参
        kwargs  字典  给target函数按照键值对传参

p.start()
功能:启动进程
* target函数会自动执行,此时进程真正被创建

p.join([timeout])
功能 : 阻塞等待回收子进程
参数 : 超时时间

* 使用multiprocessing创建子进程,同样子进程复制父进程的全部代码段,父子进程各自执行互不影响,父子进程有各自的运行空间

* 如果不使用join回收子进程则子进程退出后会成为僵尸进程
* 使用multiprocessing创建子进程往往父进程只是用来创建进程回收进程

 

转载于:https://www.cnblogs.com/sky-ai/p/9832434.html


http://www.niftyadmin.cn/n/1188273.html

相关文章

联想3650m4服务器硬盘指示灯,IBM x3650M4面板Board亮黄灯 故障维修

IBMSystem x系列服务器维修中心典型故障问题举例:1:IBM Sysntemx3650M4意外停电关机后,导致开机后会出现无法开机并且诊断面板Board故障灯会亮起。请联系我们处理2:IBM Systemx3500M4服务器长时间运行,然后当您正常关机…

xml api如何调用_我们该如何优化 UI 构建?

为了解决如何快速而高效地创建完善的 UI 这一技术难题,我们引入了 Jetpack Compose —— 这是一个现代的 UI 工具包,能够帮助开发者们在新的趋势下取得成功。在本系列的两篇文章中,我们将阐述 Compose 的优势,并探讨它背后的工作原…

服务器内存型号不一样,不拆机查看服务器内存型号

不拆机查看服务器内存型号 内容精选换一换资源状态包括正常、亚健康、异常和通道静默。亚健康、异常或通道静默都可能导致资源运行异常,您可参考如下指导进行分析和修复。当有级别为次要或提示的告警时资源状态为亚健康。修复建议:请在告警界面参考告警详…

qt可以实现创建临时无线热点吗?_盘点嵌入式那些常见的GUI:emWin、TouchGFX、MiniGUI、Qt……你用哪一个?...

GUI:Graphical User Interface,图形用户界面。以前,因为MCU的资源和处理能力有限,很少有基于MCU通用的GUI。现在,MCU资源增多,处理能力也强了,同时市场需求也增多了,GUI功能也越来越…

云的概念

私有云/公有云功能、原理、架构知识转载于:https://www.cnblogs.com/Tpf386/p/9835191.html

rx文件管理_RxAnalyze3000更新 强大的adb文件管理功能

遇到应用分身数据的提取是让取证工作者十分头疼的问题,源自分身数据存储位置的不确定性,一般情况就是尽可能的提取镜像,然后从镜像中查找分身数据的存储位置,但是这种情况现在已经有所改善了,我公司针对手机数据提取解…

返回值被忽略_Jenkins Tips 001: 忽略 Shell 步骤中的故障

每期用简短的图文描述一个 Jenkins 小技巧问题不希望 Shell 脚本因失败而中止。想一直运行 Shell 脚本并报告失败。解决方法一运行 Shell 时,你可以通过使用内置的 e 选项来控制执行你的脚本错误。这可以禁用“非 0 退出”的默认行为。请参考如下四个示例中的测试 S…

weixin设置菜单

https://jingyan.baidu.com/article/925f8cb8dfcf11c0dce05661.html转载于:https://www.cnblogs.com/wcLT/p/9837976.html