并发编程

UDP协议

# 服务端
import socket
server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 8080))
msg, address = server.recvfrom(1024)
print('msg>>>:%s' % msg.decode('utf8'))
print('address>>>:',address)
server.sendto('我是服务端 你好啊'.encode('utf8'), address)

# 客户端
import socket
client = socket.socket(type=socket.SOCK_DGRAM)
server_address = ('127.0.0.1', 8080)
client.sendto('我是客户端 想我了没'.encode('utf8'), server_address)
msg, address = client.recvfrom(1024)
print('msg>>>:%s' % msg.decode('utf8'))
print('address>>>:',address)

'''补充说明'''
1.服务端不需要考虑客户端是否异常退出
2.UDP不存在黏包问题(UDP多用于短消息的交互)

说明

并发编程前期学习阶段理论居多 后期才会有操作(调模块)
	课上尽量理解知识的基本概念
学习并发编程其实就是在学习操作系统的发展史
	也可以称之为是并发编程的发展史

操作系统的发展史

"""
三大核心硬件
	CPU:是计算机中真正干活的人
	内存:给CPU准备需要运行的代码
	硬盘:永存存储将来可能要被运行的代码
强调:CPU是整个计算机执行效率的核心
"""

1.穿孔卡片
	CPU利用率非常的低
	好处是程序员可以一个人独占计算机 想干嘛就干嘛
 
2.联机批处理系统
	缩短录入数据的时候 让CPU连续工作的时间变长>>>:提升CPU利用率
    
3.脱机批处理系统
	是现代计算机的雏形>>>:提升CPU利用率

总结:
	操作系统的发展史也可以看成是CPU利用率提升的发展史

多道技术

前提:一个核/一个CPU/一个真正干活的
    
单道技术
	所有的程序排队执行 总耗时是所有程序耗时之和
多道技术
	计算机利用空闲时间提前准备好一些数据 提高效率 总耗时较短
 
"""
多道技术
	切换+保存状态
	1.CPU在两种下会切换(去执行其他程序)
		1.程序自身进入IO操作
			IO操作:输入输出操作
				获取用户输入
				time.sleep()
				读取文件
				保存文件
		2.程序长时间占用CPU
	2.保存状态
		每次切换之前要记录下当前执行的状态 之后切回来基于当前状态继续执行
"""
做饭耗时50min
洗衣耗时30min
烧水耗时10min
    单道技术:50+30+10
    多道技术:50

进程理论

1.如何理解进程
	程序:一堆躺在文件上的死代码
	进程:正在被运行的程序(活的)
2.进程的调度算法
	先来先服务算法
    	针对耗时比较短的程序不友好
	短作业优先调度
    	针对耗时比较长的程序不友好
  	时间片轮转法+多级反馈队列
    	将固定的时间均分成很多份 所有的程序来了都公平的分一份
       分配多次之后如果还有程序需要运行 则将其分到下一层
    	越往下表示程序总耗时越长 每次分的时间片越多 但是优先级越低

进程的并行与并发

并行
	多个进程同时执行
    	单个CPU肯定无法实现并行 必须要有多个CPU
并发
	多个进程看上去像同时执行就可以称之为并发
    	单个CPU完全可以实现并发的效果 如果是并行那么肯定也属于并发

描述一个网址非常牛逼能够同时服务很多人的话术
	1.我这个网站很牛逼 能够支持14亿并行量(高并行)
    	不合理 哪有那么多CPU(集群也不现实)
	2.我这个网站很牛逼 能够支持14亿并发量(高并发) 
    	非常合理!!!  国内最牛逼的网站>>>:12306

进程的三状态

1.所有的进程要想被运行 必须先经过就绪态
2.运行过程中如果出现了IO操作 则进入阻塞态
3.运行过程中如果时间片用完 则继续进入就绪态
4.阻塞态要想进入运行态必须先经过就绪态

同步和异步(重要)

用于描述任务的提交状态

同步
	提交完任务之后原地等待任务的结果 期间不做任何事
异步
	提交完任务之后不原地等待直接去做其他事 结果自动提醒

阻塞与非阻塞(重要)

用于描述进程的执行状态

阻塞
	阻塞态
非阻塞
	就绪态 运行态

同步异步与阻塞非阻塞

同步阻塞:在银行排队 并且在队伍中什么事情都不做
同步非阻塞:在银行排队 并且在队伍中做点其他事
异步阻塞:取号 在旁边座位上等着叫号 期间不做事
异步非阻塞:取号 在旁边座位上等着叫号 期间为所欲为
posted @ 2022-08-08 20:12  懒羊羊A  阅读(30)  评论(0)    收藏  举报