并发编程:互斥锁与join的区别

join使得程序变成串行,一个一个执行,而lock可以让局部变成串行。

from multiprocessing import Process,Lock
import time
import json

def search(name):
    time.sleep(1)
    dic=json.load(open('db.txt','r',encoding='utf-8'))
    print('<%s> 查看余票票数[%s]'%(name,dic['count']))

def get(name):
    time.sleep(1)
    dic=json.load(open('db.txt','r',encoding='utf-8'))
    if dic['count'] > 0:
        dic['count'] -= 1
        time.sleep(3)
        json.dump(dic,open('db.txt','w',encoding='utf-8'))
        print('<%s>抢票成功'%name)


def task(name):
    search(name)
    get(name)

if __name__ == '__main__':
    for i in range(10):
        p= Process(target=task,args=('路人%s'%i,))
        p.start()
        p.join()  #join使得程序变成串行,一个一个执行,而lock可以让局部变成串行。

 

posted on 2019-02-20 09:26  赫晓蕊  阅读(144)  评论(0编辑  收藏  举报

导航