一、数据共享
1.进程间的通信应该尽量避免共享数据的方式
2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的。
虽然进程间数据独立,但可以用过Manager实现数据共享,事实上Manager的功能远不止于此。
|
1
2
3
4
|
命令就是一个程序,按回车就会执行(这个只是在windows情况下)tasklist 查看进程tasklist | findstr pycharm #(findstr是进行过滤的),|就是管道(tasklist执行的内容就放到管道里面了,
管道后面的findstr pycharm就接收了) |
3.(IPC)进程之间的通信有两种实现方式:管道和队列
1 from multiprocessing import Manager,Process,Lock 2 def work(dic,mutex): 3 # mutex.acquire() 4 # dic['count']-=1 5 # mutex.release() 6 # 也可以这样加锁 7 with mutex: 8 dic['count'] -= 1 9 if __name__ == '__main__': 10 mutex = Lock() 11 m = Manager() #实现共享,由于字典是共享的字典,所以得加个锁 12 share_dic = m.dict({'count':100}) 13 p_l = [] 14 for i in range(100): 15 p = Process(target=work,args=(share_dic,mutex)) 16 p_l.append(p) #先添加进去 17 p.start() 18 for i in p_l: 19 i.join() 20 print(share_dic) 21 # 共享就意味着会有竞争,