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同步锁的一种变形.其主要从两方面进行了改造:节点的结构与节点等待机制.在结构上引入了头 ...
随机推荐
- 用笛卡尔积来创建一千六百万大表 整体19分钟 大表建成两分钟 设置id13分钟
昨天拙文中讲述了用自增方式创建一千六百万大表的方案,这回讨论的是用笛卡儿积,实践证明这种方案更快. 2020年3月15日08点58分实验开始 创建仅有四千数据的tb_4thousand1表: SQL& ...
- Brup sute
暴力破解
- Linux curl携带cookie测试接口
问题: 休息在家,被告知要启动测试环境的一个定时任务,但是服务器在内网,连上vpn只能访问内网的开发环境,无法访问测试环境,于是进开发环境服务器,ping测试环境的ip,发现是通的,于是想到通过开发环 ...
- [Leetcode]Sql系列3
题目1 产品数据表: Products +---------------+---------+ | Column Name | Type | +---------------+---------+ | ...
- Dubbo必须会的知识点
前言 应用架构演变: 单一架构ORM:单机构建网站,是一个高内聚版本,所有功能部署在一起.通过一个容器和JSP/Servlet技术或通过一些开源的框架如SSM以及SSH,通过数据库管理系统来存储数据. ...
- hystrix(6) 命令执行
上一节中讲到了HystrixCommand有四种执行方法,这一节就来讲一下这四种方法直接的关系以及他们的实现. execute方法使用同步方式获取结果,本质是调用了queue方法获取了一个Future ...
- 005.操作系统及Linux系统,虚拟机的作用和发展历史
操作系统及其作用 操作系统发展史 Linux系统 虚拟机 操作系统 操作系统 操作系统的作用 不同领域的主流操作系统 操作系统(Operation System,OS) 操作系统作为接口的示意图 没有 ...
- jquery学习:
1.什么是jQuery jquery 全称 javaScript Query.是js的一个框架.本质上仍然是js. 2.jQuery的特点 支持各种主流的浏览器. 使用特别简单 拥有便捷的插件扩展机制 ...
- python中的三大流程
三大流程又叫程序控制流程 在我们编写代码时,程序是怎么运行的,要用到程序控制流程.在普通代码中,运行的方向是从上到下,从左到右 这就是顺序(逐行扫描). 第二个是分支(又叫选择)结构,例如在编写代码时 ...
- Lua table(表)
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组.字典等. Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil. Lua ta ...