day38 Pyhton 并发编程
# 网络编程
# arp协议 :
# 1.这是一个通过ip找mac地址的协议
# 2.由于有了socket,用户在使用网络的时候,只需要关心对方用户的ip地址就可以了
# 3.如果用户即将和这个ip进行通信,那么还需要知道它的mac地址
# 4.这个时候就需要由你的机器发起一个arp请求
# 5.由交换机进行广播
# 6.对应的机器会回应这个arp请求
# 7.通过交换机单播发给你的机器 # tcp协议和udp协议的特点?
# 1.tcp
# 面向连接的可靠的流式传输 适合传输比较大的文件,
# 对稳定性要求比较高的
# 扩展的说 为什么 可靠?
# 2.udp
# 无连接的 快速 但不可靠
# 适合传输对效率要求比较高的短消息 # 你了解4层交换机么?
# 了解,4层就是osi协议中的第4层,传输层
# 这一层封装的是端口的信息和tcp协议以及udp协议
# 所以4层交换机就是可以直接识别传输层协议和端口信息的机器
# 能够实现信息输出直接到端口 # 笔试题
# osi五层协议
# 应用层 http https ftp smtp
# socket
# 传输层 tcp/udp协议 端口 4层交换机\4层路由器
# 网络层 ipv4/ipv6协议 ip 路由器\三层交换机
# 数据链路层 arp协议 mac地址 网卡\交换机
# 物理层 网线 # 以下哪些协议不属于数据链路层?
# 以下哪些硬件设备是属于网络层的? # socket
# 什么是socket?
# 网络协议的大接口,帮助我们完成网络传输过程中的osi4层以及一下信息的封装
# tcp协议 : 要先建立连接 占线 用socketserver解决
# udp协议: 不需要建立连接 且可同时和多个客户端进行交互 # socketserver 实现了并发的socket tcp server # 黏包现象 :
# 黏包现象怎么产生的
# 首先,我们发出的信息不是立即通过网络传送到另一端
# 而是我们发到操作系统的缓存中,
# tcp协议首先流式传输无边界,第二是可靠所以每一条数据都有回执
# 那么为了节省网络上延迟的时间
# 连续发送出的多个短信息就会黏在一起
# 由发送端的缓存发送除去,所以接收到的就是黏在一起的数据了 # 发送端发送的消息也不是直接发送到对面的应用中
# 而是发到了对方操作系统的缓存中
# 如果连续发送的数据在对方的缓存中没有被及时取走
# 那么也会发生黏包现象 # 如何解决黏包
# 自定义协议
# 先发送即将发送数据的长度,然后再发送数据
# 先接收数据的长度,再根据接收的长度接收数据
# 用到了struct模块,来控制第一次发送数据长度的这条信息的长度 # ftp
# 功能复杂
# 是一个相对完善的大功能
# 并发编程 6-7day
# 操作系统基础理论 初识进程 day1
# 进程 day2 day3
# 线程 day4 day5
# 协程 day6 + 拓展的知识点
# IO模型(待定) # 操作系统的基础
# 操作系统的进化论
# 认识进程的概念
# 进程的状态
# 什么是并行什么是并发
# 阻塞和非阻塞的概念
# 同步和异步的概念
# 初识python中的进程
# 什么是io操作
# i input 输入 相对内存 进入内存
# read
# recv
# input 人脑子里的内容直接通过键盘输入到内存中
# load
# o output 输出 相对内存 从内存出去
# write
# send
# dump # 文件操作就是io
# 网络操作就是io # 文件在硬盘上 程序在运行的时候 是在内存中存储数据
# 如果文件中的内容 -输入的过程-> 内存中
# str -输出的过程-> 写到文件中 # 网络操作
#send 输出
#recv 输入 # 多道操作系统
# 提高了cpu的利用率
# 第一次出现了一个概念 : 任务状态的保存
# 数据隔离的概念(由于同时在执行的多个程序之间的数据不能混为一谈) # 单处理机系统中多道程序运行时的特点:
# (1)多道:计算机内存中同时存放几道相互独立的程序;
# (2)宏观上并行:同时进入系统的几道程序都处于运行过程中,即它们先后开始了各自的运行,但都未运行完毕;
# (3)微观上串行:实际上,各道程序轮流地用CPU,并交替运行。 # 计算机 - 多道操作系统
# 研究生 : 5分钟 并且没有IO
# 老教授 : 24h 并且没有IO # 时间短的走 : 短作业优先算法 # 分时操作系统 把时间分成片 # 实时操作系统 # 大型的任务 高并发
# 分布式系统 帮助你分发任务 拆解任务
# celery - 分布式 # 所有的程序 - 任务
# 所有对任务 - 进程
# 什么是进程 ? 进行中的程序
# 进程 :
# 是计算机中资源分配的最小单位
# 并且 进程与进程之间的数据是隔离的 # 进程的三状态图
# 就绪 阻塞 运行 # 同步
# 有几件事情 先做一件,做完一件再做一件
# 异步
# 有几件事情 同时完成
# 阻塞 blocking
# input
# accept
# recv
# sleep
# recvfrom
# 非阻塞 所有不阻塞的程序
# import socket
# sk = socket.socket()
# sk.setblocking(False)
# sk.bind(('127.0.0.1',9000))
# sk.listen()
# while True:
# try:
# conn,addr = sk.accept()
# break
# except BlockingIOError:
# print('没人连我')
# conn.recv # 四个词不是一回事儿
# 同步和异步是一对反义词
# 阻塞和非阻塞是一对反义词
# 同步阻塞
# 一件事儿一件事儿的做
# 中间还要被阻塞
# 同步非阻塞 : 费力不讨好
# 一件事儿一件事儿的做
# 但是不阻塞
# 异步阻塞
# 同时进行的
# 每一件事儿都会遇到阻塞事件
# 异步非阻塞
# 几个事情同时进行
# 每一件事都不阻塞
# import os,time # print(os.getpid(),os.getppid())
# get pid process id 获取当前进程号
# get ppid parent process id 获取当前父进程号
# time.sleep(20)
# print(os.getpid()) # 子进程和父进程之间的关系
# pycharm启动了py文件
# py文件就是子进程
# pycharm就是父进程
开启子进程
# import multiprocessing # 这是个包
import os
from multiprocessing import Process def son_process():
'''这个函数中的代码是在子进程中执行的'''
print('执行我啦',os.getpid(),os.getppid()) if __name__ == '__main__':
# son_process的外面是一个主进程
print('1 -->',os.getpid())
p = Process(target=son_process)
p.start()
day38 Pyhton 并发编程的更多相关文章
- day41 Pyhton 并发编程04
内容回顾 socket 最底层的网络通信 所有的网络通信都是基于socket 进程 什么是进程? 是操作系统的发展过程中,为了提高cpu的利用率,在操作系统同时运行多个程序的时候,为了数据的安 ...
- day43 Pyhton 并发编程06
一.内容回顾 线程 锁 为什么有了GIL之后还需要锁 多个线程同时操作全局变量还需要锁 当出现'非原子性操作',例如+= -= *= /= l.append(l) 原子性操作 a += 1 a= a ...
- day42 Pyhton 并发编程05
一.内容回顾 # 线程 # 正常的编程界: # 进程 # 计算机中最小的资源分配单位 # 数据隔离 # 进程可以独立存在 # 创建与销毁 还有切换 都慢 给操作系统压力大 # 线程 # 计算机中能被C ...
- day40 Pyhton 并发编程03
一.内容回顾 进程是计算机中最小的资源分配单位 进程与进程之间数据隔离,执行过程异步 为什么会出现进程的概念? 为了合理利用cpu,提高用户体验 多个进程是可以同时利用多个cpu的,可以实现并行的效果 ...
- day39 Pyhton 并发编程02 后
一.开启子进程的另一种方式 import os from multiprocessing import Process class MyProcess(Process): def __init__(s ...
- day39 Pyhton 并发编程02
一.内容回顾 并发和并行的区别 并发 宏观上是在同时运行的 微观上是一个一个顺序执行 同一时刻只有一个cpu在工作 并行 微观上就是同时执行的 同一时刻不止有一个cpu在工作 什么是进程 一个运行中的 ...
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- 伪共享(false sharing),并发编程无声的性能杀手
在并发编程过程中,我们大部分的焦点都放在如何控制共享变量的访问控制上(代码层面),但是很少人会关注系统硬件及 JVM 底层相关的影响因素.前段时间学习了一个牛X的高性能异步处理框架 Disruptor ...
- 【Java并发编程实战】----- AQS(四):CLH同步队列
在[Java并发编程实战]-–"J.U.C":CLH队列锁提过,AQS里面的CLH队列是CLH同步锁的一种变形.其主要从两方面进行了改造:节点的结构与节点等待机制.在结构上引入了头 ...
随机推荐
- Cassandra使用 —— 一个气象站的例子
使用场景: Cassandra非常适合存储时序类型的数据,本文我们使用一个气象站的例子(该气象站每分钟需要存储一条温度数据). 一.方案1:每个设备占用一行 这个方案的思路就是给每个数据源创建一行,比 ...
- Solr专题(一)手把手教你搭建Solr服务
一.Solr是什么,能解决什么问题? Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对 ...
- 【原创】解BUG-xenomai内核与linux内核时间子系统之间存在漂移
版权声明:本文为本文为博主原创文章,转载请注明出处.如有问题,欢迎指正.博客地址:https://www.cnblogs.com/wsg1100/ 一.问题起源 何为漂移?举个例子两颗32.768kH ...
- TKE基于弹性网卡直连Pod的网络负载均衡
前言 Kubernetes在集群接入层设计并提供了两种原生资源Service和Ingress,分别负责四层和七层的网络接入层配置. 传统的做法是创建Ingress或LoadBalancer类型的Ser ...
- AD16
第三集 制作光敏小夜灯的原理图 1.点击G切换栅格的精度 2.元器件放置好之后要先布局在布线 3.布线完成后要检查电路的合理性.对应查一下电阻的个数,位置是不是符合.在原理上大概的估计是否可以. ...
- Vue和d3.js(v4)力导向图force结合使用,v3版本升级v4【一】
前段时间因为参与项目涉密,所以一直没有更新博客,有些博友给我私信或者留言要部分博文的源码,因为我的电脑更换,demo的源码没有备份 所以无法提供.大家可针对具体问题问我,有空我定会回复的.另外转发文章 ...
- 第23课 - #error 和 #line 使用分析
第23课 - #error 和 #line 使用分析 1. #error 的用法 (1)#error 是一个预处理器指示字,用于生成一个编译错误消息,这个消息最终会传递到编译器(gcc) 在思考这一点 ...
- [LeetCode]198. 打家劫舍(DP)
题目 你是一个专业的小偷,计划偷窃沿街的房屋.每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警. 给定一个 ...
- pycharm2020.2破解版教程激活码支持Windows Linux Mac系统-中关村老大爷
听说很多朋友想要PyCharm专业版2020.2的破解教程.现在来了,亲测破解成功.支持mac linux windows系统.本教程提供官方安装包.激活码和注册补丁. 本教程仅供学习和讨论,禁止商业 ...
- SpringMVC初始化阶段流程源码分析
1.都知道SpringMVC项目启动的时候都会初始化一个类:DispatcherServlet,看这个类的源码我们可以发现他其实就是一个servlet, 为什么这么说呢?请看: DispatcherS ...