ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

并发编程-1

2022-08-08 16:01:42  阅读:504  来源: 互联网

标签:socket 编程 阻塞 并发 address 进程 CPU


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在两种情况下会切换(去执行其他程序)
		① 程序自身进入IO操作
			IO操作:输入输出操作
			获取用户输入
			time.sleep()
			读取文件
			保存文件
		② 程序长时间占用CPU
	2.保存状态
		每次切换之前都要保存记录下当前执行的状态 之后切回来基于当前状态继续执行
"""
eg: 做饭耗时40min  洗衣服耗时30min  扫地耗时10min
	单道技术:40+30+10    多道技术:40

进程理论

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

进程的并行与并发

并行
	多个进程同时执行
    	单个CPU肯定无法实现并行 必须要有多个CPU
并发
	多个进程看上去像同时执行就可以称之为并发
    	单个CPU完全可以实现并发的效果 如果是并行 那么肯定也属于并发
eg:描述一个网站很厉害能够同时服务很多人的话术
	1.我这个网站很6 能够支持14亿人并行量(高并行)
    	不合理 哪有那么多CPU(集群也不现实)
    2.我这个网站很6 能够支持14亿并发量(高并发)
    	超级合理 国内最6的网站>>>:12306(很少很少崩溃)

进程的状态

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

同步和异步

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

阻塞与非阻塞

用于描述进程的执行状态
    阻塞
    	阻塞态
    非阻塞
    	就绪态 运行态

同步异步与阻塞非阻塞

同步阻塞:在银行排队 在队伍中什么都不做
同步非阻塞:在银行排毒 在队伍中可以玩手机
异步阻塞:取号 在座位上等待叫号 期间不做任何事
异步非阻塞:取号 在座位等着叫号 期间可以玩手机

标签:socket,编程,阻塞,并发,address,进程,CPU
来源: https://www.cnblogs.com/zzjjpp/p/16562209.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有