#进程是程序的运行,程序不运行不产生进程。
#1、进程的并行与并发:
# 并行:是指两者同时执行,比如赛跑,两人都在不停的往前跑。(资源够用,比如三个线程,四核的cpu)
# 并发:是指资源有限的情况下,两者交替轮流使用资源,比如一段路(单核cpu)只能同时过一个人,A走一段路之后,让给B,
# B用完之后继续给A,交替使用,目的是提高效率。 #2、进程的状态:就绪 运行 阻塞
# (1)就绪(Ready)状态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。
# (2)执行/运行(Running)状态:当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。
# (3)阻塞(Blocked)状态:正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。

#3、同步和异步:
# 比如我去银行办理业务,可能会有两种方式:
# 同步 :选择排队等候;一边排队一边等候消息通知,排队和等候是同步进行的。
# 异步 :选择取号,等到排到我这一号时由柜台的人通知我轮到我去办理业务;
# 就是异步等待消息通知。在异步消息处理中,
# 等待消息通知者(在这个例子中就是等待办理业务的人)往往注册一个回调机制,
# 在所等待的事件被触发时由触发机制(在这里是柜台的人)通过某种机制(在这里是写在小纸条上的号码,喊号)找到等待该事件的人。 #4、阻塞和非阻塞:
# 阻塞:继续上面的那个例子,不论是排队还是使用号码等待通知,如果在这个等待的过程中,
# 等待者除了等待消息通知之外不能做其它的事情,那么该机制就是阻塞的,表现在程序中,
# 也就是该程序一直阻塞在该函数调用处不能继续往下执行。
# 非阻塞:相反,有的人喜欢在银行办理这些业务的时候一边打打电话发发短信一边等待,
# 这样的状态就是非阻塞的,因为他(等待者)没有阻塞在这个消息通知上,而是一边做自己的事情一边等待。 #5、同步、异步、阻塞、非阻塞:
# 1、同步阻塞:效率最低。拿上面的例子来说,就是你专心排队,什么别的事都不做。
# 2、异步阻塞:如果在银行等待办理业务的人采用的是异步的方式去等待消息被触发(通知),也就是取了号,
# 假如在这段时间里他不能离开银行做其它的事情,那么很显然,这个人被阻塞在了这个等待的操作上面;
#    异步操作是可以被阻塞住的,只不过它不是在处理消息时阻塞,而是在等待消息通知时被阻塞。
# 3、同步非阻塞:效率最低。想象一下你一边打着电话一边还需要抬头看到底队伍排到你了没有,
# 如果把打电话和观察排队的位置看成是程序的两个操作的话,这个程序需要在这两种不同的行为之间来回的切换,
# 效率可想而知是低下的。
# 4、异步非阻塞:效率更高,因为打电话是你(等待者)的事情,而通知你则是柜台(消息触发机制)的事情,
# 程序没有在两种不同的操作中来回切换。比如说,这个人突然发觉自己烟瘾犯了,需要出去抽根烟,于是他告诉大堂经理说,
# 排到我这个号码的时候麻烦到外面通知我一下,那么他就没有被阻塞在这个等待的操作上面,
# 自然这个就是异步+非阻塞的方式了。 #6、进程的创建:创建进程就是让程序运行起来,所有进程(子进程)都是被其他进程(父进程)创建出来的。 # 7、
import os
import time
print(os.getpid()) #获取当前运行的python程序的进程id:process id
print(os.getppid()) #获取当前进程的父id:parent process id
time.sleep(100) #睡眠是为了在 任务管理器 的详细信息当中看到上面两进程的pid,否则上面两进程运行完
#是瞬间的事情,无法看到pid。

# 8、multiprocess是综合处理进程的模块。multi 多元的、综合的,process进程:
from multiprocessing import Process
import os
def func():
print('子进程', os.getpid())
print(123) if __name__ == '__main__': #创建的进程要放在此语句里面。
p = Process(target=func) #创建一个进程对象。实例化对象=类()
print('主进程',os.getpid())
p.start() #告诉操作系统我要开始一个进程,至于操作系统什么时候调度,无法知道,所以先执行下面的代码。
print('主进程', os.getpid())
#执行结果是:主进程 12164
# 主进程 12164
# 子进程 21952
# 123

day34-进程的更多相关文章

  1. day34进程相关

    进程1 什么是进程    进程指的是一个正在进行/运行的程序,进程是用来描述程序执行过程的虚拟概念    进程vs程序    程序:一堆代码    进程:程序的执行的过程    进程的概念起源于操作系 ...

  2. day34——僵尸进程和孤儿进程、互斥锁、进程之间的通信

    day34 僵尸进程和孤儿进程 基于unix环境(linux,macOS) 主进程需要等待子进程结束之后,主进程才结束 主进程时刻监测子进程的运行状态,当子进程结束之后,一段时间之内,将子进程进行回收 ...

  3. day34 并行并发、进程开启、僵尸及孤儿进程

    day34 并行并发.进程开启.僵尸及孤儿进程 1.并行与并发 什么是并行? 并行指的是多个进程同时被执行,是真正意义上的同时 什么是并发? 并发指的是多个程序看上去被同时执行,这是因为cpu在多个程 ...

  4. day34 python学习 守护进程,线程,互斥锁,信号量,生产者消费者模型,

    六 守护线程 无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁 需要强调的是:运行完毕并非终止运行 #1.对主进程来说,运行完毕指的是主进程代码运行完毕 #2.对主线程来说,运行完 ...

  5. 学到了林海峰,武沛齐讲的Day34 完 线程 进程 协程 很重要

    线程 进程 协程 很重要 ...儿子满月回家办酒,学的有点慢,坚持

  6. day34

    今日内容: 1.开启子进程的两种方式 2.join方法 3.进程之间内存空间相互隔离 4.僵尸进程和孤儿进程 5.守护进程 6.互斥锁 7.进程对象其他相关的属性和方法 1.开启子进程的两种方式 方式 ...

  7. Python并发编程-进程 线程 同步锁 线程死锁和递归锁

    进程是最小的资源单位,线程是最小的执行单位 一.进程 进程:就是一个程序在一个数据集上的一次动态执行过程. 进程由三部分组成: 1.程序:我们编写的程序用来描述进程要完成哪些功能以及如何完成 2.数据 ...

  8. Python3 进程 线程 同步锁 线程死锁和递归锁

    进程是最小的资源单位,线程是最小的执行单位 一.进程 进程:就是一个程序在一个数据集上的一次动态执行过程. 进程由三部分组成: 1.程序:我们编写的程序用来描述进程要完成哪些功能以及如何完成 2.数据 ...

  9. 故障重现, JAVA进程内存不够时突然挂掉模拟

    背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...

  10. 死磕内存篇 --- JAVA进程和linux内存间的大小关系

    运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...

随机推荐

  1. Windows下Nodejs的开发环境搭建

    我为什么选择学习 Node.js Node.js是前后端分离开发的新选择.比较热门的前端框架React,Vue都可以在Node.js环境上开发. Node.js 是一个基于 Chrome V8 引擎的 ...

  2. PHP+InfiniteScroll实现网页无限滚动加载数据实例

    PHP+InfiniteScroll实现网页无限滚动加载数据实例,实现原理:当滚动条到底离网页底部一定长度的时候,向后台发送页数并获取数据. 首先我们在页面上先放置10条数据,即第一页,每一项都是p标 ...

  3. page-break-before和page-break-after 实现分页打印

    page-break-before和page-break-after CSS属性并不会修改网页在屏幕上的显示,这两个属性是用来控制文件的打印方式.每个打印属性都可以设定4种设定值:auto.alway ...

  4. 怎么调出原生态launcher

    adb shell am start -n com.android.launcher3/.Launcher

  5. Vue.js——5.生命周期

    Vue的生命周期 创建阶段new Vue1,beforeCreate() 表示在实例没有被创建出来之前会执行它加载data和methods2,caeated() data 和methods被初始化了 ...

  6. JavaScript—瀑布流

    现在网页中需要翻页的列表,好多都已经改为瀑布流了.所以这个思路还是特别重要的 HTML Css 页面 因为每个图片的高度不一样所以她的 top 和left 我们待会通过JS计算 动态生成 js部分 思 ...

  7. "Mathematical Analysis of Algorithms" 阅读心得

    "Mathematical Analysis of Algorithms" 阅读心得 "Mathematical Analysis of Algorithms" ...

  8. Linux上创建RStudio快捷方式

    在Linux平台上经常会有一些软件需要通过命令行的方式启动,这没有图标启动方便,下面是在Linux平台为RStudio创建图标链接的方法: 下面以在桌面上创建RStudio快捷方式为例: (1) 首先 ...

  9. 十、GUI编程

    GUI图形用户界面编程       GUI编程类似“搭积木”,将一个个组件放到窗口中,并通过增加“事件处理”,完成一个个程序.例如:记事本.word.画图工具等. tkinter模块 tkinter是 ...

  10. LeetCode——324. 摆动排序 II

    给定一个无序的数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序. 示例 1: 输入: nums = [1, 5 ...