进程杂谈

#进程就是正在执行的一个过程,是对正在运行程序的一个抽象

#进程由程序、数据集和进程控制块(最重要的,进程切换  状态如何保存,恢复和记录)组成

"""
进程调度:
1.先来先服务
2.短作业优先调度
3.时间片轮转法
4.多级反馈队列 进程遇到IO就会被挂起
""" '''
将一个单独的cpu变成多个
虚拟的cpu(多道技术:时间多路复用和空间
多路复用+硬件上支持隔离)
没有进程的抽象,现代计算机将不复存在
''' '''
操作系统的作用:
1.隐藏丑陋复杂的硬件接口,提供良好的抽象接口
2.管理,调度进程,并且将多个进程对硬件的竞争变得有序
''' '''
多道技术:
1.产生背景:针对单核,实现并发
ps:现在的主机一般是多核,那么每个核都会利用多道技术
空间复用
时间复用
''' '''
同步和异步是通讯方式,阻塞和非阻塞是等待状态
同步 阻塞:发出消息,不回就傻等。跟女神聊天,站在一旁等,什么都不干
同步 非阻塞:发消息,不回就等,但是干别的事情。跟女神聊天,站在一旁等,一边吃饭一边回头看看手机等消息
异步 非阻塞:发消息,不回消息也不等,就去干别的。跟女神聊天,不回我就去外面打篮球,等听到电话响了就去聊天
异步 阻塞:发消息,不回也不等,但是也不干别的。跟女神聊天,不回我就在屋里想其他美女,啥也不干。 ''' """
串行
并发 切换+保存状态
并行 CPU切换 开启子进程的原因是为了支持并发 #这是一个函数,也相当于一个作业,
执行时开启一个子进程,会把父进程整个放到新的名称空间里面执行
,所以x=1也会放进去 x = 1
def task():
print(x) 主进程会等子进程全部运行结束才会结束 #僵尸进程:父进程的子进程结束的时候父进程没有wait()情况下子进程会变成僵尸进程,即子进程先结束,父进程未回收子进程,没有释放子进程占用的资源 #孤儿进程:一个父进程退出,它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将会被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作(是无害的) #父进程等着子进程都死,回收僵尸进程,也是无害的 #父进程一直不死,造成了大量僵尸进程,占用了大量的pid号,是有害的,因为pid号是有限的,最简单的解决办法就是杀死父进程

python实现开启进程

# multiprocess模块:其实是一个操作管理进程的包,
# 包括创建进程部分,进程同步部分,进程池部分,
# 进程之间的数据共享 #下面的代码会报错,因为子进程会把父进程的代码拷贝运行,再生成子进程在拷贝,,,,类似递归 from multiprocessing import Process
import time def task():
print('进程 start')
time.sleep(2)
print('进程 end') p = Process(target=task)#实例化出来对象,向操作系统发送开启子进程的请求,还没开启子进程。
p.start()#告诉操作系统我要开启子进程 #01 开启子进程的方式一(调用模块改进执行方法,加__name__ = __main__) from multiprocessing import Process
import time def Study(name, age):
print(f'{name}启动了子进程1')
print(f'{name}的年龄是{age}') def Play(name,age):
print(f'{name}启动了子进程2')
print(f'{name}的年龄是{age}') if __name__ == '__main__':
p = Process(target=Study, args=('nick', 18))
p2 = Process(target=Play, args=('tank', 49))
p.start() #只是发送请求开启子进程,
# time.sleep(2)
p2.start()#只是发送请求开启子进程,
print('执行了父进程') #按顺序执行下来,比上面两个start要先执行 #开启子进程的方式二(写一个类继承Process类)
from multiprocessing import Process class Study(Process):
def __init__(self, name):
super().__init__() #写完这个,下面的name又变成了Test-2
self.name = name
print(name)
def run1(self, v):
self.v = v
print(f'{self.name}的跑步速度是{v}') if __name__ == '__main__':
p = Study('nick')
p.start()
p.run1(29) #3 验证进程的内存空间隔离
from multiprocessing import Process
import time x = 0
def task():
global x
x = 100
print(f'子进程的x修改为了{x}')
if __name__ == '__main__':
p = Process(target=task)
p.start()
time.sleep(3)
print(x) #先打印100,再打印0

进程及Python实现的更多相关文章

  1. visual studio如何附加到进程调试python命令

    既然是调试python脚本,那么我首先想到的是附加到进程(python.exe) 至于为什么不用F5直接启动python脚本呢,因为调用命令如下 C:> python test.py < ...

  2. 操作系统/应用程序、操作中的“并发”、线程和进程,python中线程和进程(GIL锁),python线程编写+锁

    并发编程前言: 1.网络应用 1)爬虫 直接应用并发编程: 2)网络框架 django flask tornado 源码-并发编程 3)socketserver 源码-并发编程 2.运维领域 1)自动 ...

  3. Python自动化 【第九篇】:Python基础-线程、进程及python GIL全局解释器锁

    本节内容: 进程与线程区别 线程 a)  语法 b)  join c)  线程锁之Lock\Rlock\信号量 d)  将线程变为守护进程 e)  Event事件 f)   queue队列 g)  生 ...

  4. PEP 324 subprocess 新的进程模块 -- Python官方文档译文 [原创]

    PEP 324 -- subprocess 新的进程模块(subprocess - New process module) 英文原文:https://www.python.org/dev/peps/p ...

  5. python之线程进程协成

    线程与进程 什么是线程 线程是进程一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源,但是它可与同属一个线程的 ...

  6. python之进程与线程

    什么是操作系统       可能很多人都会说,我们平时装的windows7 windows10都是操作系统,没错,他们都是操作系统.还有没有其他的? 想想我们使用的手机,Google公司的Androi ...

  7. Python之路,Day9, 进程、线程、协程篇

    本节内容 操作系统发展史介绍 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...

  8. Python之线程、进程和协程

    python之线程.进程和协程 目录: 引言 一.线程 1.1 普通的多线程 1.2 自定义线程类 1.3 线程锁 1.3.1 未使用锁 1.3.2 普通锁Lock和RLock 1.3.3 信号量(S ...

  9. Python::OS 模块 -- 进程参数

    os模块的简介请参看 Python::OS 模块 -- 简介 os模块的文件和目录操作 Python::OS 模块 -- 文件和目录操作 os模块的进程管理 Python::OS 模块 -- 进程管理 ...

随机推荐

  1. Spring Boot 知识笔记(集成zookeeper)

    一.本机搭建zookeeper伪集群 1.下载安装包,复制三份 2.每个安装包目录下面新建一个data文件夹,用于存放数据目录 3.安装包的conf目录下,修改zoo.cfg配置文件 # The nu ...

  2. C# HTTP系列11 以普通文件流方式上传文件远程服务器

    系列目录     [已更新最新开发文章,点击查看详细] 应用程序中上传附件是最常使用的操作之一,ASP.NET客户端一般通过上传控件实现, <input type="file" ...

  3. boolean 属性的定义规范

    [强制]POJO类中的任何布尔类型的变量,都不要加is前缀,否则部分框架解析会引起序列化错误.说明:在本文MySQL规约中的建表约定第一条,表达是与否的值采用is_xxx的命名方式,所以,需要在< ...

  4. Redis(五)事务

    Redis(五)事务 引用wiki中关于事务处理的定义: Transaction processing is information processing in computer science th ...

  5. Java中转换为十六进制的几种实现

    public class HexUtil { private static final String[] DIGITS_UPPER = {"0", "1", & ...

  6. aspect原理分析

    人的记忆能力是有限的,分析.建模与解释能力是无限的 Call Hierarchy isa hook aspect_hookClass() aspect_prepareClassAndHookSelec ...

  7. 【HTML】处理<br>换行符追加到前端换行无效的问题 --- html中渲染的字符串中包含HTML标签无效的处理方法,字符串中包含HTML标签被转义的问题 解决

    需求如下图: 追加给前台后,效果如下: 可以在源码看到: 是将后台给出来的数据,直接当作字符串给填充在了前台HTML中. 而查看浏览器编译后的HTML源码可以发现: 原来字符串中的<br> ...

  8. PIE截图方法的优化

    因为我们组的项目要通过截图获取数据,所以要经常使用截图工具,之前截图都是根据教程(https://www.cnblogs.com/PIESat/p/10243308.html)用的地图显示范围截图,而 ...

  9. 2019 浩德钢圈java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.浩德钢圈等公司offer,岗位是Java后端开发,因为发展原因最终选择去了浩德钢圈,入职一年时间了,也成为了面 ...

  10. 【python爬虫】每天统计一遍up主粉丝数!

    目录 每天统计一遍up主粉丝数! 第一步,爬取up主的粉丝信息 1.首先导入需要的包 2.为了方便,把它写成一个函数 3.那么就调用一下这个函数吧! 4.运行一下,成功啦! 第二,说好的每天统计一遍呢 ...