(1)加深对进程并发执行的理解,认识多进程并发执行的实质。算法
(2)观察进程共享资源的现象,学习解决进程互斥和同步的方法。并发
本实验要求用高级语言,启动多进程并发运行,设计相应代码,显示进程无关并发、进程共享变量并发的运行结果。并完成实验报告。app
3、实验内容:学习
分别实现如下四种状况的并发:ui
1.并发的进程之间无关,显示进程名称,开始与结束时间。spa
模拟多终端售票状况,并发的多个终端进程之间共享剩余票数这个共享变量。设计
2.用全局变量实现。code
3.用进程间共享数据机制实现。blog
4.用进程间共享数据机制和加锁机制实现。进程
4、实验过程与结果
#mpml.py #使用Manager from multiprocessing import Manager, Process def main(dic, name): dic['count'] -= 1 print(name, dic) if __name__ == '__main__': mgr = Manager() dic=mgr.dict({'count':100}) p_lst=[] for i in range(50): p =Process(target=main,args=(dic,'进程%s'%i,)) p.start() p_lst.append(p) for i in p_lst: i.join() print('主进程',dic)
#mpml.py #使用Manager,lock from multiprocessing import Manager, Process,Lock def main(dic, lock,name): lock.acquire() dic['count'] -= 1 print(name, dic) lock.release() if __name__ == '__main__': mgr = Manager() lck=Lock() dic=mgr.dict({'count':100}) p_lst=[] for i in range(50): p =Process(target=main,args=(dic,lck,'进程%s'%i,)) p.start() p_lst.append(p) for i in p_lst: i.join() print('主进程',dic)