操作系统


  1. 串行: 一个程序完完整整的执行完再执行下一个
  2. 并发: 看起来像是同时运行,其实就是程序间的切换频率比较快,看不出来
  3. 并行:真正的同时运行

多道技术


  1. 空间复用:共用一个内存条,多个进程相互隔离,物理级别隔离
  2. 时间复用: 共用一个CPU

阻塞和非阻塞


程序运行的三个状态:

就绪(ready)

运行(run)

阻塞(blocked)


开启子进程,申请新的内存空间,把父进程的所有代码,完整的拷贝一份过去,这就是子进程

from multiprocessing import Process

def task(x):
pass if __name__ == '__main__':
p = Process(target=task,args=(45,))
p.start()

开始子进程方式二(不常用)

class Xx(Process):
def __init__(self,x):
super().__init__()
self.x = x
def run(self):
pass if __name__ == '__main__':
p = Xx()
p.start()

验证内存空间彼此隔离

from multiprocessing import Process
import time x=0
def task():
global x
x= 100
print('子进程的x修改为了{}'.format(x)) if __name__ == '__main__':
p = Process(target=task)
p.start()
time.sleep(5)
print(x)

僵尸进程:

​ 父进程的子进程 结束的时候,父进程没有对子进程进行pid回收(wait())的情况下进程会变成僵尸进程

补充:父进程等着所有子进程结束才会结束

孤儿进程(无害):

​ 一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程,孤儿进程将被Init进程(进程号为1)所回收,并由init进程对它们完成状态收集工作。

分析三种情况:

情况一: 无害

父进程等着子进程结束完后,回收僵尸进程

情况二 : 无害

父进程死了,子进程还在运行,都要被init进程接管并且回收

情况三: 有害

父进程一直不死,造成大量僵尸进程,占用了大量的Pid号

由于pid号是有限的,最直接的办法是直接杀死父进程

python进程基础点整理的更多相关文章

  1. Python面试题整理-更新中

    几个链接: 编程零基础应当如何开始学习 Python ? - 路人甲的回答 网易云课堂上有哪些值得推荐的 Python 教程? - 路人甲的回答 怎么用最短时间高效而踏实地学习 Python? - 路 ...

  2. python——进程基础

    我们现在都知道python的多线程是个坑了,那么多进程在这个时候就变得很必要了.多进程实现了多CPU的利用,效率简直棒棒哒~~~ 拥有一个多进程程序: #!/usr/bin/env python #- ...

  3. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  4. 使用gdb调试Python进程

    使用gdb调试Python进程 有时我们会想调试一个正在运行的Python进程,或者一个Python进程的coredump.例如现在遇到一个mod_wsgi的进程僵死了,不接受请求,想看看究竟是运行到 ...

  5. python进程、线程、协程(转载)

    python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资 ...

  6. !!对python列表学习整理列表及数组详细介绍

    1.Python的数组分三种类型:(详细见 http://blog.sina.com.cn/s/blog_6b783cbd0100q2ba.html) (1) list 普通的链表,初始化后可以通过特 ...

  7. Python进程、线程、协程详解

    进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...

  8. python进程池剖析(一)

    python中两个常用来处理进程的模块分别是subprocess和multiprocessing,其中subprocess通常用于执行外部程序,比如一些第三方应用程序,而不是Python程序.如果需要 ...

  9. python——进程、线程、协程

    Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env pytho ...

随机推荐

  1. 在Atmel Studio7中创建ASF项目

    使用ASF自带例程的方式创建程序是很方便,但是因为系统例程支持的ATMEL开发板往往和用户板配置不同,所以我们需要自己创建项目.下面介绍在AS7.0中快速创建一个ASF项目的方法. 1.首先从菜单开始 ...

  2. Cesium案例解析(二)——ImageryLayers影像图层

    目录 1. 概述 2. 实例 2.1. ImageryLayers.html 2.2. ImageryLayers.js 2.2.1. 代码 2.2.2. 解析 3. 结果 1. 概述 Cesium支 ...

  3. DFA最小化,语法分析初步

    1.将DFA最小化:教材P65 第9题 2.构造以下文法相应的最小的DFA S→ 0A|1B A→ 1S|1 B→0S|0 语言:(01 | 10)*(01 | 10) 自动机图: DFA状态转换矩阵 ...

  4. sql server的简单分页

    --显示前条数据 select top(4) * from students; --pageSize:每页显示的条数 --pageNow:当前页 )) sno from students); --带条 ...

  5. golang的make

    golang 分配内存主要有内置函数new和make,今天我们来探究一下make有哪些玩法. map只能为slice, map, channel分配内存,并返回一个初始化的值.首先来看下make有以下 ...

  6. Nacos 安装(带视频)

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并 ...

  7. JavaScript实例:运动的小球

    本篇博文通过制作一个小球运动动画的实例,来学习在HTML5的画布上实现动画制作的方法,同时理解面向对象程序设计的基本思想. 1.绘制小球 先在HTML页面中设置一个画布. <canvas id= ...

  8. IT兄弟连 HTML5教程 使用盒子模型设计页面布局

    布局所涉及的技术非常很多,足以另写单独的一本书了.在本节中主要介绍网站中最常用的布局方案,包括区块框居中.两列浮动.三列浮动及多列浮动的区块框. 1  居中设计 区块框居中的设计是在网页布局中常用的技 ...

  9. 关于 Python_你一定没读过的8个技巧

    介绍 Python 功能和小技巧的文章网上有无数篇,比如变量解压缩,partial 偏函数,枚举可迭代对象... 但关于 Python 我们能说的还有很多.所以今天我将向大家展示一些我知道和有使用过的 ...

  10. Flask 教程 第十二章:日期和时间

    本文翻译自The Flask Mega-Tutorial Part XII: Dates and Times 这是Flask Mega-Tutorial系列的第十二部分,我将告诉你如何以适配所有用户的 ...