python33day
内容回顾
概念
同步异步阻塞和非阻塞
同步阻塞:调用一个函数需要等待这个函数的执行结果,并且在执行这个函数的过程中CPU不工作
inp=input('>>>')
同步非阻塞:调用一个函数需要等待这个函数的执行结果,在执行这个函数的过程中CPU工作
ret=eval('1+2+3-4')
异步非阻塞:调用一个函数不需要等待这个函数的执行结果,并且在执行这个函数的过程中CPU工作
start()
异步阻塞:调用一个函数不需要等待这个函数的执行结果,在执行这个函数的过程中CPU不工作
#开启十个进程 异步的
#获取这个进程的返回值,并且能做到哪一个进程先结束,就先获取谁的返回值。
进程的三状态图
- 就绪 ----->操作系统调度 ---->运行 ----->遇到io操作 ----> 阻塞
- ----->时间片到了 ----> 就绪
进程和调度算法:短作业和长作业是有区别的,越长的作业被调度的没有短作业积极,每个io操作都会让你辛苦排队得来的执行CPU机会让给其他程序
- 先来先服务
- 短作业优先
- 分时的概念
- 多级反馈算法
进程开启和关闭
- 父进程 开启了 子进程
- 父进程 要负责给 子进程 回收子进程结束后的资源
今日内容
Process类拾遗
开启进程的另一种方法
from multiprocessing import Process
import os
import time class MyProcess(Process):
def __init__(self,a,b,c):
self.a=a
self.b=b
self.c=c
super().__init__()
def run(self):
time.sleep(1)
print(os.getppid(),os.getpid(),self.a,self.b,self.c) if __name__ == '__main__':
print('----->',os.getpid())
for i in range(10):
p=MyProcess(1,2,3)
p.start()
print(p.pid,p.ident)
print(p.name)
print(p.is_alive())
p.terminate() #强制结束一个子进程
print(p.is_alive())
time.sleep(0.01)
print(p.is_alive())
Process类的一些其他方法和属性
- name pid daemon
守护进程
import time
from multiprocessing import Process def son1():
while True:
print('in son1')
time.sleep(1) def son2():
for i in range(10):
print('in son2')
time.sleep(1) if __name__ == '__main__':
p1=Process(target=son1)
p1.daemon=True # 表示设置p1是一个守护进程
p1.start()
p2=Process(target=son2).start()
time.sleep(5)
print('in main')
# 主进程会等待所有的子进程结束,是为了回收子进程的资源
# 守护进程会等待主进程的代码执行结束后再结束,而不是等待整个主进程
# 守护进程结束和其他子进程的结束与否无关
进程同步---lock锁
- 抢票的时候,有人买了,票就会立刻少
进程之间通信--队列
- 生产者消费者模式
- 爬虫的时候
- 分布式操作:celery
- 本质:就是让生产数据和消费数据的效率达到平衡并最大化
- consumer producer
进程之间的数据共享----Manager
代码总行数3047+49=3096行
python33day的更多相关文章
随机推荐
- 【LeetCode】905. Sort Array By Parity 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述: 题目大意 解题方法 自定义sorted函数的cmp 日期 题目地址:h ...
- 【剑指Offer】10- I. 斐波那契数列 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人微信公众号:负雪明烛 目录 题目描述 解题方法 递归 动态规划 日期 题目地址:htt ...
- Pikachu漏洞练习-SQL-inject(持续更新)
本来在bup中repeater模式可以多次测试,但不知为何总是出错 这里把我们想查询的数据库和版本进行联合查询,放包,页面回显数据库名称和版本分别为pikachu,5.7.26 数据库版本大于5那么i ...
- WebRTC下 的 NAT 穿透技术
NAT的概念模型 NAT名字很准确,网络地址转换,就是替换IP报文头部的地址信息.NAT通常部署在一个组织的网络出口位置,通过将内部网络IP地址替换为出口的IP地址提供公网可达性和上层协议的连接能力. ...
- A Tutorial on Energy-Based Learning
目录 概 主要内容 损失函数 Energy Loss Generalized Perceptron Loss Generalized Margin Loss Hinge Loss Log Loss L ...
- [炼丹术]YOLOv5训练自定义数据集
YOLOv5训练自定义数据 一.开始之前的准备工作 克隆 repo 并在Python>=3.6.0环境中安装requirements.txt,包括PyTorch>=1.7.模型和数据集会从 ...
- Drools集成SpringBootStarter
1.说明 基于fast-drools-spring-boot-starter, 能够方便的将规则引擎Drools集成到Spring Boot, 基于前面介绍过的文章Drools集成SpringBoot ...
- 【计理05组01号】R 语言基础入门
R 语言基本数据结构 首先让我们先进入 R 环境下: sudo R 赋值 R 中可以用 = 或者 <- 来进行赋值 ,<- 的快捷键是 alt + - . > a <- c(2 ...
- Python3.7 比较两个Excel文件指定列的值的异同,并将核对结果写入Excel中(含升级版本)
背景: 最近工作中需要核对客户的历史数据, 接近400个产品,需要核对的列有15列,行数有8000+行 肉眼核对简直要吐血 心想着反正在学python呢 人生苦短 何不用python写个脚本 帮助我核 ...
- 下面哪些命令可以查看file1文件的第300-500行的内容?
下面哪些命令可以查看file1文件的第300-500行的内容? cat file1 | tail -n +300 | head -n 200 cat file1| head -n 500 | tail ...