首页 > 系统服务 > 详细

进程_锁

时间:2020-03-28 22:17:37      阅读:63      评论:0      收藏:0      [点我收藏+]
#共享数据,硬盘(文件),Lock --不推荐
from multiprocessing import Process,Lock
import time,json,random
import os
def search():
    dic=json.load(open(db.txt))
    print(%s 剩余票数 %s  %(os.getpid(),dic[count]))

def get():
    dic=json.load(open(db.txt))
    time.sleep(0.1) #模拟读数据的网络延迟
    if dic[count] >0:
        dic[count]-=1
        time.sleep(0.2) #模拟写数据的网络延迟
        json.dump(dic,open(db.txt,w))
        print(%s 购票成功%os.getpid())

def task(lock):
    search()
    lock.acquire()
    get()
    lock.release()
if __name__ == __main__:
    lock=Lock()
    for i in range(10): #模拟并发100个客户端抢票
        p=Process(target=task,args=(lock,))
        p.start()
#共享数据,内存 Manager,Lock  --不推荐
from multiprocessing import Process,Manager,Lock

# def task(dic,lock):
#     lock.acquire()
#     dic["count"]-=1
#     lock.release()
    
def task(dic,lock):
    with lock:
        dic["count"]-=1
    

if __name__=="__main__":
    lock=Lock()
    m=Manager()
    dict=m.dict({"count":100})
    p_list=[]
    for i in range(100):
        p=Process(target=task,args=(dict,lock))
        p_list.append(p)
        p.start()
    for p in p_list:
        p.join()
    print(dict)
    

 

进程_锁

原文:https://www.cnblogs.com/hapyygril/p/12589717.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!