python僵尸进程和孤儿进程_Python每日3题-什么是僵尸进程和孤儿进程?

每日3题是麦叔的面试系列专题之一,每天包括初级,中级,高级难度题目各一道。

每日3题,100天之后成为大牛!

如果有不明白的,给麦叔留言。

[Easy] 谈谈你对面向对象的理解?

思考30秒再往下翻...

面向对象是相当于面向过程而言的,面向过程语言是一种基于功能分析的,以算法为中心的程序设计方法,而面向对象是一种基于结构分析的,以数据为中心的程序设计思想。在面向对象语言中有一个很重要的东西,叫做类。面向对象有三大特性:封装、继承、多态。

[Normal] Python异步使用场景有哪些?

思考30秒再往下翻...

多线程和多进程的模型虽然解决了并发问题,但是系统不能无上限地增加线程。由于系统切换线程的开销也很大,所以,一旦线程数量过多,CPU的时间就花在线程切换上了,真正运行代码的时间就少了,结果导致性能严重下降。

由于我们要解决的问题是CPU高速执行能力和IO设备的龟速严重不匹配,多线程和多进程只是解决这一问题的一种方法。

另一种解决IO问题的方法是异步。当代码需要执行一个耗时的IO操作时,它只发出IO指令,并不等待IO结果,然后就去执行其他代码了。一段时间后,当IO返回结果时,再通知CPU进行处理。

异步使用场景:

不涉及共享资源,或对共享资源只读,即非互斥操作

没有时序上的严格关系

不需要原子操作,或可以通过其他方式控制原子性

常用于IO操作等耗时操作,因为比较影响客户体验和使用性能

不影响主线程逻辑

[Hard] 什么是僵尸进程和孤儿进程?怎么避免僵尸进程?

思考30秒再往下翻...

孤儿进程:父进程退出,子进程还在运行的这些子进程都是孤儿进程,孤儿进程将被init 进程(进程号为1)所收养,并由init 进程对他们完成状态收集工作。

僵尸进程:进程使用fork 创建子进程,如果子进程退出,而父进程并没有调用wait 或waitpid 获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中的这些进程是僵尸进程。

避免僵尸进程的方法:

1.fork 两次用孙子进程去完成子进程的任务

2.用wait()函数使父进程阻塞

3.使用信号量,在signal handler 中调用waitpid,这样父进程不用阻塞

mac系统可以通过命令查看僵尸进程

支持麦叔,请点在看,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值