进程相关内容

1、基于多进程实现并发的套接字通信,完成如下功能:
1、客户端链接功成功后,先登录,登录成功后才可以执行其他功能
2、登录成功后可以执行下载功能
3、登录成功后可以执行上传功能

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
	编程复杂,更适用于基于网络交换数据
posted @ 2019-07-08 15:07  enazede  阅读(143)  评论(0编辑  收藏  举报