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同步锁的一种变形.其主要从两方面进行了改造:节点的结构与节点等待机制.在结构上引入了头 ...
随机推荐
- 查看CentOs6.5/7的系统版本号
在centos6.5上用 [root@msg45 ~]# lsb_release -aLSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0- ...
- UEFI+MBR
前言 传统情况下装系统的两种方案bios + mbr 或 uef i+ gpt but一直有一个疑问! 是否可以使用uefi + mbr 名词解释 硬盘格式 MBR分区:全称"Master ...
- GuestOS? HostOS?
起因 今天在网上看到一篇文章 有几个陌生的关键词不太熟悉,就随笔记一下. 名词解释 # OS :操作系统 # VM(虚拟机) 里的OS 称为 GuestOS # 物理机 ...
- JS的全局变量无法给Ajax里的变量赋值
前阶段遇到这么一个问题,在JS定义一个全局变量,JS方法里的其他地方都能使用,偏偏ajax里无法赋值,也不是无法赋值,但赋值总是慢一拍,具体的解决方案如下图所示:
- Kubernetes-16:一文详解ServiceAccount及RBAC权限控制
一.ServiceAccount 1.ServiceAccount 介绍 首先Kubernetes中账户区分为:User Accounts(用户账户) 和 Service Accounts(服务账户) ...
- JavaScript 异步编程
博客地址:https://ainyi.com/96 众所周知,JavaScript 是单线程的,但异步在 js 中很常见,那么简单来介绍一下异步编程 同步编程和异步编程 同步编程,计算机一行一行按顺序 ...
- [程序员代码面试指南]最长递增子序列(二分,DP)
题目 例:arr=[2,1,5,3,6,4,8,9,7] ,最长递增子序列为1,3,4,8,9 题解 step1:找最长连续子序列长度 dp[]存以arr[i]结尾的情况下,arr[0..i]中的最长 ...
- c#中的ReadOnlySequenceSegment<T>和ReadOnlySequenceSegment<T>
关于.net core高性能编程中的Span<T>和Memory<T>网上资料很多,这里就不说了.今天一直在看ReadOnlySequenceSegment<T>和 ...
- 《图解HTTP》学习笔记之入门
学习HTTP之前,很必要了解一下关于Web网络基础. TCP/IP协议族 1.应用层:应用层决定了向用户提供应用 服务时的通信活动,比如FTP(文件传输协议).DNS(域名系统).HTTP(超文本传输 ...
- Git+Gitlab+Ansible剧本实现一键部署动态网站(5)
项目前言 之前已经写了一篇关于git和ansible的博客<Git+Gitlab+Ansible剧本实现一键部署Nginx–技术流ken>.关于git,gitliab,ansible在我以 ...