一、基于多进程实现并发的套接字通讯,完成以下功能:
一、客户端连接功成功后,先登陆,登陆成功后才能够执行其余功能
二、登陆成功后能够执行下载功能
三、登陆成功后能够执行上传功能python
2.什么是互斥锁 顾名思义,相互排斥,一人使用,其余人不能使用。 锁其实就是给执行代码加上限制,本质上是一个标志为True,False 1用来解决什么问题? 当并发的操做共享资源发生的数据安全问题 2解决问题的原理是什么? 将访问共享资源的代码由并发变为串行 3与join是的区别是什么? join:------ join是让整个进程任务全都串行 join是固定死任务的执行顺序 mutex------ 锁能够仅将部分代码变为串行 锁-多进程之间仍是公平竞争的
3.编写模拟抢票代码 分析总结什么时候会出现数据错乱 from multiprocessing import Process,Lock import json def show(): with open("db.json")as f: data=json.load(f) print('剩余票数',data['count']) def buy(): with open("db.json")as f: data=json.load(f) if data['count']>0: data['count']-=1 with open("db.json",'wt')as f2: json.dump(data,f2) print('抢票成功') def task(mutex): show() mutex.acquire() buy() mutex.release() if __name__ == '__main__': mutex=Lock() for i in range(5): p=Process(target=task,args=(mutex,)) p.start() #什么时候会错乱 环境: 前提给的票数限制越少,越会出现问题 一张票出现并发的话,被多人抢到,出现实际多人了是同一张 json读码出问题,wt写入清空,在写入的同时,另外一方由于速度快,读入又写入,致使甲方失败 在读入的时候不改变,在buy的进程中先后加锁后,限制了买的过程当中的读入,保证安全 show仍是能够并发,buy加锁串行-----读写分开 1两个进程同时在写的时候确定会出问题 2写的进程正在进行,你读的进程又来了
4.进程队列是什么 有什么特色编程
是一种特殊的容器 特色是先进先出
5.进程间通信有哪些方法说明优缺点 1共享文件 优势:数据量理论上没有限制 缺点:效率低 适用于:交互不频繁,且数据量较大状况 2共享内存(主要方式) 优势:效率高 缺点:数据量不能太大 适用于:交互频繁,交互量小 3管道: 管道是基于文件的,它是单向的,百年城比较复杂 4socket 编程复杂,更适用于基于网络交换数据