主要内容:
- 1.进程同步
- 2.进程间通信
1.进程同步
(1)锁
引出:虽然我们实现了程序的异步,让多个任务可以同时在几个进程中并发处理,他们之间的运行没有顺序,一旦开启也不受我们控制。尽管并发编程让我们能更加充分的利用IO资源,但是也给我们带来了新的问题:进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的,而共享带来的是竞争,竞争带来的结果就是错乱,如何控制,就是加锁处理。
import time import json import random from multiprocessing import Process def get_ticket(i): print("我已到达,要开始抢票了") with open("ticket","r") as f: last_ticket_info = json.load(f) last_ticket = last_ticket_info["count"] if last_ticket > 0: time.sleep(random.random()) last_ticket = last_ticket-1 last_ticket_info["count"] = last_ticket with open("ticket","w") as f: json.dump(last_ticket_info,f) print("%s号抢到了,Ynb" % i) else: print("%s傻缺没有抢到票,明年再来吧" %i) if __name__ =="__main__": for i in range(10): p = Process(target=get_ticket,args=(i,)) p.start()