#进程是程序的运行,程序不运行不产生进程。
#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. Integer和int的区别

    1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象的引用,当new一个Integer ...

  2. C++的一些知识点汇总

    数组形参 数组形参 void test(const int arr[]); //arr中的值不能被改变 void test(const int *arr); //arr中的值不能被改变,包括arr[1 ...

  3. 强大的代码生成器——T4模板

    T4 Editor工具下载地址 tangible T4 Editor 2.5.0 plus modeling tools for VS 2019 https://marketplace.visuals ...

  4. 冲刺期末阶段一<公文档案流转管理系统>

    今天下午的四节课要求自己完成公文流转管理系统,并规定时间看个人进程,相对来说我对增删改查掌握的不彻底,对项目的逻辑框架不太熟练,所以我感觉今天的进度有点慢.有待继续学习. 完成进度:1.分步骤先理清整 ...

  5. 深度学习在美团配送ETA预估中的探索与实践

    1.背景 ETA(Estimated Time of Arrival,“预计送达时间”),即用户下单后,配送人员在多长时间内将外卖送达到用户手中.送达时间预测的结果,将会以”预计送达时间”的形式,展现 ...

  6. Python笔记_第一篇_面向过程_第一部分_1.Python环境的设置(含虚拟机)

    *Python环境的设置 Python的环境设置也就是所需工作平台的软件搭建.常用的搭建平台IOS系统+Linux系统和Windows+Linux系统的搭建.这里主要说明的是Windows+Linux ...

  7. coures包下载和安装 可解决报错ImportError: No module named '_curses'

    http://blog.csdn.net/liyaoqing/article/details/54949253 coures curses 库 ( ncurses )提供了控制字符屏幕的独立于终端的方 ...

  8. CodeForces 1287B Hyperset

    N^2遍历所有得(i,j)然后可以根据(i,j)字符串构造出来第三个T字符串,然后查找一下是否有这个T存在即可,注意最后答案要/3因为会重复出现. #include <stdio.h> # ...

  9. [原]排错实战——VS清空最近打开的工程记录

    原脚本how-toprocess monitorsysinternalsvsvisual studiovs2017vs2019注册表 缘起 vs有一个功能 -- 在起始页会显示最近打开的工程列表,方便 ...

  10. Java中String常用方法总结

    package cn.zhang.Array; /** * String类的一些常用方法 * @author 张涛 * */ public class TestString { public stat ...