欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

day30 并发编程

发布时间:2024/7/5 编程问答 22 豆豆
生活随笔 收集整理的这篇文章主要介绍了 day30 并发编程 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

大文件上传思维逻辑

服务端

# 1.socket创建TCP服务 # 2.连接循环 # 3.通信循环 接受固定长度的字典的报头解析获取字典数据的真实长度接受字典数据 解码 反序列化成字典从字典中获取文件大小 以及文件名等其他信息 # 4.循环接受文件数据文件操作(wb) 接受一行往文件中写入一行

客户端

# 1.socket客户端代码 # 2.利用os.listdir获取文件夹中所有的文件名 # 3.循环打印 供用户选择想要上传的文件 用户选择是否符合要求 # 4.根据用户寻找及os.path.join方法拼接用户想要上传的文件绝对路径 # 5.根据文件路径获取文件大小os.path.getsize() # 6.定义一个发送给服务端的字典 {"file_name":用户选择的文件名,"file_size":文件大小,...额外键值对消息} # 7.制作字典的报头 序列化 编码 # 8.发送字典的报头 # 9.发送字典数据 # 10.发文件 文件操作 一行行读取并发送

 

UDP的特点

#1 数据报协议(自己自带报头) #2 基于UDP协议传输数据 数据是不安全的 #3 你就把UDP看成发短信 你只管发 对方收不收 看不看跟你一毛钱关系 简易版本的qq基于UDP开发

 

UDP跟TCP的区别

# 1.多个客户端可以实现并发的效果 # 2.服务端不存在 客户端也不会报错(sendto) # 3.不会粘包 # 4.允许发空

 

异常处理

当你不确定某一些代码在什么样的情况下会出错 你可以考虑使用异常处理 (能尽量少用就尽量少用) 异常处理过多 会造成代码结构更加

 

异常的类型

# 1.语法错误 # 2.逻辑错误try: 可能会出异常的代码块 except 异常的类型 as e: # 将异常的报错消息 赋值给e print(e) else: try代码块没有任何异常发生才会触发else的运行 finally: 无论是否发生异常 都会执行finally内部代码异常类型:Exception BaseException 万能异常自定义异常 class MyError(BaseException): def __init__(self,msg): super().__init__() self.msg = msg def __str__(self) return '%s'%self.msg主动抛出异常 raise TypeError('')断言 assert

 


socketserver
socketserver能够支持服务端的并发效果

并发编程

计算机发展史
进程理论
创建进程的两种方式(******)
进程方法join
进程对象及其他方法
进程间数据互相隔离
守护进程
互斥锁(*****)


多道技术

# 1.空间上的复用 多个程序共用一套计算机硬件# 2.时间上的复用 切换+保存状态2.1 当一个程序遇到IO操作 操作系统会剥夺该程序的cpu执行权限(提高了cpu的利用率 并且也不影响程序的执行效率)2.2 当一个程序长时间占用cpu 操作系统也会剥夺该程序的cpu执行权限(降低了程序的执行效率)

 

并发与并行

# 并发:看起来像同时运行的就可以 # 并行:真正意义上的同时执行 单核的计算机能不能实现并行,但是可以实现并发

 

 程序与进程

# 程序:一坨代码 # 进程:正在运行的程序

 

同步与异步

同步异步:表示的是任务的提交方式 # 同步:任务提交之后 原地等待的任务的执行并拿到返回结果才走 期间不做任何事(程序层面的表现就是卡住了) # 异步:任务提交之后 不再原地等待 而是继续执行下一行代码(结果是要的 但是是用过其他方式获取)

阻塞非阻塞

阻塞非阻塞:表示的程序的运行状态 # 阻塞:阻塞态 # 非阻塞:就绪态 运行态

强调:同步异步 阻塞非阻塞是两对概念 不能混为一谈

僵尸进程与孤儿进程

# 僵尸进程 父进程回收子进程资源的两种方式 1.join方法 2.父进程正常死亡 所有的进程都会步入僵尸进程# 孤儿进程 子进程没死 父进程意外死亡 针对linux会有儿童福利院(init) 如果父进程意外死亡他所创建的子进程都会被福利院收养

守护进程


互斥锁

当多个进程操作同一份数据的时候 会造成数据的错乱 这个时候必须加锁处理 将并发变成串行 虽然降低了效率但是提高了数据的安全 注意: 1.锁不要轻易使用 容易造成死锁现象 2.只在处理数据的部分加锁 不要在全局加锁锁必须在主进程中产生 交给子进程去使用

 




FTP作业



转载于:https://www.cnblogs.com/Ryan-Yuan/p/11327920.html

总结

以上是生活随笔为你收集整理的day30 并发编程的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。