主要内容:

  • 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()
模拟抢票 - 没加锁

相关文章: