并发编程:互斥锁与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可以让局部变成串行。

猜你喜欢

转载自www.cnblogs.com/hexiaorui123/p/10404643.html