5.31—034—周五

几日所学内容:

    一、多进程:

    二、阻塞 非阻塞 并行 并发

    三、三种状态的切换

    四、进程的两种使用方式

    五、join 函数  (重点)

    六、孤儿进程与僵尸进程

    七、常用属性

一、多进程:

进程:一个正在被运行的程序就称之为进程,是程序具体执行过程,一种抽象概念,进程来自于操作系统

  创建新的进程方式:

    1、系统初始化

    2、一个进程在运行过程中开启了子进程

    3、用户的交互式请求,而创建一个新程序

    4、一个批处理作业的初始化(只在大型机的批处理系统中应用)

进程与程序的区别:

  程序就是一堆计算机可以识别文件,程序在没有被运行时就是存在硬盘上的一堆二进制

  运行程序时,要从硬盘读取数据到内存中,CPU从内存读取指令并执行

  程序一旦运行就产生了进程

一个程序可以多次执行 产生多个进程,但是进程之间相互独立

当我们右键运行了一个py文件时 ,其实启动的是python解释器,你的py文件其实是当作参数传给了解释器

二、阻塞  非阻塞  并行  并发      (重点)

    阻塞 : 程序遇到io操作是就进入了阻塞状态

      本地IO:input  print  sleep  read  write

      网络IO:recv  send

    非阻塞: 程序正常运行中 没有任何IO操作 就处于非阻塞状态

  阻塞 非阻塞 说的是程序的运行状态

    并发: 多个任务看起来是在同时处理,本质上是切换执行,只不过是切换速度非常快

    并行: 多个任务真正的同时执行,必须具备多核CPU,才可能并行

  并发 并行 说的是 任务的处理方式

三、三种状态的切换

  就绪态,运行态,阻塞态

          

  多道技术会在进程执行时间过长或遇到IO时自动切换其他进程,意味着IO操作与进程被剥夺CPU执行权都会造成进程无法继续执行

程序员永恒的话题:提高效率

  根本方法就是让程序尽可能处于运行状态;减少IO 尽可能的多占用CPU时间;缓冲区就是用于减少IO操作的

四、进程的两种使用方式:      (重点)

  1、直接实例化Process ,将要执行任务用target传入

    from multiprocessing import  Process

  2、继承Process类 ,覆盖run方法 将任务放入run方法中

  3、在windows下,开启子进程必须放在 if __name__ == ‘__main__‘ 下运行,因为windows在开启子进程时会重新加载所有的代码造成递归创建进程

五、join 函数  (重点)

  Process的对象具备一个join函数

  用于提高子进程优先级 ,使得父进程等待子进程结束

六、孤儿进程与僵尸进程

孤儿进程:

  指的是,父进程先结束 ,而子进程还在运行着,孤儿进程无害,有其存在的必要性

  例如:qq开启了浏览器,qq先退出了 浏览器应该继续运行,孤儿进程会被操作系统接管

僵尸进程:

  指的是:子进程已经结束了,但是操作系统会保存一些进程信息,如PID,运行时间等,此时这个进程就称之为僵尸进程

  僵尸进程如果太多将会占用大量的资源,造成系统无法开启新新进程

  linux 中有一个wai/waitpid 用于父进程回收子进程资源

  python会自动回收僵尸进程

七、常用属性:

  p.join()          # 等待子进程结束

  p.terminate()       # 终止进程

  print(p.name)       # 进程的名称

  print(p.is_alive())    # 是否存活

  p.terminate()       # 与start一样 都是给操作系统发送指令 所以会有延迟

  print(p.is_alive())    # 这个进程是否还存活

  print(p.pid)       # 得到ip

  print(p.exitcode)     # 获取退出码

原文地址:https://www.cnblogs.com/Chinesehan/p/10957019.html

时间: 2024-10-23 10:53:11

5.31—034—周五的相关文章

android开发艺术探索学习 之 结合Activity的生命周期了解Activity的LaunchMode

转载请标明出处: http://blog.csdn.net/lxk_1993/article/details/50749728 首先还是先介绍下Activity的launchMode.一共同拥有四种. 1.standard. 2.singleTop. 3.singleTask. 4.singleInstance. 第一种standard.就是无论怎么样每次启动都会创建一个新的实例.也就是系统默认的启动方式. 我们设置ActivityA的启动方式为standard.设置点击运行startActiv

根据年月日,判断20XX年XX月XX日是 星期几

// 已知1999.12.31是周五 // 根据年月日,判断20XX年XX月XX日是 星期几 #include "stdio.h" unsigned int Year; unsigned int Month; unsigned int Day; //=============================================================================== //判断是否为闰年 //============================

Date()日期创建

哎..这些个月人变懒了...以后多写写博客才行 上周五测试报了个问题,说日期计算出现了问题.原两日期相差1天的,但是系统计算出相差31天.(当天是2014年10月31日 周五) 后来查了下原因,一兄弟前台js代码是这么写的 功能是想创建一个为'2014-11-03 23:59:59'的时间对象. var expirationDateStr = '2014-11-03 23:59:59'; var expirationDate = new Date(); expirationDate.setFul

2019美国旅游计划

行程概要 行程概要 天数 起点,途径,终点 主要景点 住宿 飞行 1 上海,多伦多 无 [加]尼亚拉加瀑布城 是 2 [加]尼亚拉加瀑布城 尼亚加拉瀑布 多伦多   3 多伦多,纽约 多伦多 纽约 是 4 纽约 曼哈顿 纽约   5 纽约 曼哈顿 纽约   6 博兹曼 无 博兹曼 是 7 博兹曼,黄石公园 黄石公园 老忠实Cabin   8 黄石公园,大蒂顿公园 黄石公园,大蒂顿公园 杰克逊小镇   9 大蒂顿公园,黄石公园 大蒂顿公园 Lake Cabin   10 黄石公园 黄石公园 Coo

程序员学炒股(7) 股指期货收盘价对第二天开盘价有影响吗?

很多微博和文章都说,股指期货的收盘价对第二天开盘价影响很大,因为股指多交易15分钟,因此对股市的第二天开盘价影响非常大,网上有一个文章是这样说的: “股指期货开盘早于股市15分钟,收盘又晚15分钟,国泰君安研究员曾统计,股指期货晚收盘15分钟的涨跌对于次日期指走势的预测准确率达到了70%.” 看看这个文章的作者是江恩艾略特道氏,虽然不知道是啥,但是看着还是很唬人的,再看看这篇文章的访问次数695567次,可见还是有影响力的. 如果这篇文章说的是真的话,能够预测到第二天开盘的大盘也是很不错滴,我们

第31周五

8月第一天比较顺利,本可以不加班为了明天早下班过七夕又加班把明天要做的事基本做完了,明天过去就是再验证下走走流程.今天又碰到一个问题,在ie下如果不设置table-layed为fixed属性则单元格会被里面内容撑大,但如果设置当单元格大小与里面图片大小一直时图片又显示不全,今天就遇到这样的问题,设置行高和图片高度一直或多几个像素图片都显示不全,最后只好不设置行高. 今天我对近期尤其是自己的过去的七月份就行了反思,主要还是明确自己的想要,并不断训练自己对想要东西的渴望,改变自己养成习惯,收获不断设

2016第31周五

从前有个穷人很穷,一个富人见他可怜,起了善心,想帮他富起来.富人送给他一头牛,嘱咐他好好的开荒.穷人满怀希望开始奋斗.谁知没过几天,牛要吃草,人要吃饭,穷日子比以前还过的艰难.这时穷人就想了:一头牛吃我家三口人的口粮,这事不能干!不如把牛卖了,买几只羊,先杀一只吃,救救急,剩下的还可以生小羊,小羊长大了拿去卖,可以赚更多的钱.穷人的计划如愿以偿,只是吃了一只羊之后,小羊迟迟没有生下来,日子又艰难了,忍不住又吃了一只羊.穷人想,这样下去不得了,不如把羊卖了买成鸡,鸡生蛋的速度要快些,鸡蛋立刻可以赚

【2014年5月份日常记录表(2014.5.1—5.31,31天)】

2014年5月份日常记录表(2014.5.1-5.31,31天) 日期 周次 天数 编程 日记 阅读 英语 早睡 备注 2014.5.1 周四 第1天       完成   2014.5.2 周五 第2天           2014.5.3 周六 第3天           2014.5.4 周日 第4天           大二下学期 第十一周 2014.5.5 周一 第5天           2014.5.6 周二 第6天           2014.5.7 周三 第7天      

java 中获取2个时间段中所包含的周数(股票的周数->从周六到周五)

Calendar 类中是以周日为开始的第一天的,所以Calendar.DAY_OF_WEEK为1的时候是周日. 在股票中有日K 周K和月K的数据.  在此之中的周K是指交易日中一周的数据,周六到周五为一个周期. 1 /** 2 * 返回2个日期间有多少股票周 3 * @param startDate 2012-02-01 开始日期 4 * @param endDate 2014-02-01 结束日期 5 * @return 6 */ 7 public static int getStockWee