码迷,mamicode.com
首页 > 系统相关 > 详细

进程相关内容

时间:2019-07-08 15:20:17      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:固定   import   理论   共享   的区别   之间   清空   特点   解决   

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
    编程复杂,更适用于基于网络交换数据

进程相关内容

标签:固定   import   理论   共享   的区别   之间   清空   特点   解决   

原文地址:https://www.cnblogs.com/zhuyuanying123--/p/11151298.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!