一、数据共享

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 # 共享就意味着会有竞争,
数据共享

相关文章:

  • 2022-12-23
  • 2022-02-11
  • 2022-12-23
  • 2021-10-17
  • 2022-12-23
  • 2021-09-16
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-16
  • 2022-01-08
  • 2021-09-16
  • 2021-12-28
  • 2022-12-23
  • 2021-09-16
相关资源
相似解决方案