什么是python 进程锁?
#同步效率低,但是保证了数据安全 重点
很多时候,我们需要在多个进程中同时写一个文件,如果不加锁机制,就会导致写文件错乱
这个时候,我们可以使用multiprocessing.Lock()

def get_ticket(i,ticket_lock): print("等待大家都到齐") time.sleep(1) ticket_lock.acquire() with open("ticket","r")as f: # for line in f: # dic=json.load(line.strip()) dic=json.load(f) if dic["count"]>0: time.sleep(random.random()) dic["count"]-=1 with open("ticket","w")as s_f: json.dump(dic,s_f) print("%s号抢到票了"%i) else: print("%s号没抢到票,明年见" % i) ticket_lock.release() if __name__ == '__main__': ticket_lock=Lock() for i in range(1,11): p=Process(target=get_ticket,args=(i,ticket_lock,)) p.start()
什么是信号量?

# 红绿灯事件 import time import random from multiprocessing import Event,Process def cars(e,i): if not e.is_set(): print('car%i在等待'%i) e.wait() # 阻塞 直到得到一个 事件状态变成 True 的信号 print('