1,IPC-PIPE:

管道 pipe

from multiprocessing import Process
from multiprocessing import Pipe
p1,p2 = Pipe() #支持双向通信
# send
p1.send('菠萝蜜干')
# recv
print(p2.recv())
p2.send('酸奶')
# p2.close()
print(p1.recv())
print(p1.recv()) #管道里没有值会报错: EOFError
2,用管道也能实现生产者消费者模型
 from multiprocessing import Process,Pipe,Lock

 def consumer(p,name,lock):
produce, consume=p
produce.close()
while True:
lock.acquire()
baozi=consume.recv()
lock.release()
if baozi:
print('%s 收到菠萝蜜干:%s' %(name,baozi))
else:
consume.close()
break def producer(p,n):
produce, consume=p
consume.close()
for i in range(n):
produce.send(i)
produce.send(None)
produce.send(None)
produce.close() if __name__ == '__main__':
produce,consume=Pipe()
lock = Lock()
c1=Process(target=consumer,args=((produce,consume),'c1',lock))
c2=Process(target=consumer,args=((produce,consume),'c2',lock))
p1=Process(target=producer,args=((produce,consume),10))
c1.start()
c2.start()
p1.start() produce.close()
consume.close() c1.join()
c2.join()
p1.join()
print('主进程')

3,IPC-Manager

import time
from multiprocessing import Manager
from multiprocessing import Process
# Manager是一个类 就提供了可以进行数据共享的一个机制 提供了很多数据类型 dict list
def func(dic):
print(dic)
while True:
print(dic)
time.sleep(3)
if __name__ == '__main__':
m = Manager()
d = m.dict({'count':0})
print(d)
p = Process(target=func,args=(d,))
p.start()
d['count'] = 0 from multiprocessing import Manager,Process,Lock
def work(d,lock):
lock.acquire()
d['count'] -= 1
lock.release() if __name__ == '__main__':
lock= Lock()
m = Manager()
dic=m.dict({'count':100}) # 共享的数据
l = []
for i in range(100):
p=Process(target=work,args=(dic,lock))
p.start()
l.append(p)
[p.join() for p in l]
print(dic)

最新文章

  1. scala 的内部类
  2. 5、HTML5列表、块和布局
  3. 使用spring @Scheduled注解执行定时任务、
  4. [转]使用Maven添加依赖项时(Add Dependency)时,没有提示项目可用,并且在Console中,输出: Unable to update index for central|http://repo1.maven.org/maven2 。
  5. java 堆栈分析4
  6. Android环境搭建要点
  7. [转载]C#中字典集合的两种遍历
  8. c#操作XML文件的通用方法
  9. Java语言中有4种访问修饰符
  10. NSBundle 类
  11. yii2 去掉index.php的方法
  12. 如何灵活利用免费开源图标字体-IcoMoon篇
  13. cocos2d-x 3.0 使用Sax解析xml文件(中国显示器问题解决)
  14. angularJS绑定数据中对标签转义的处理
  15. 另存了一次网页之后其它word打开格式都变了
  16. Docker: docker network 容器网络
  17. npm webpack vue-cli
  18. 自己写一个java的mvc框架吧(三)
  19. jq js 对象互转
  20. 【转载】MySQl 数据库插入加锁分析

热门文章

  1. java中的线程(1):如何正确停止线程Why Are Thread.stop, Thread.suspend, Thread.resume and Runtime.runFinalizersOnExit Deprecated?
  2. windows 系统C盘暴增
  3. (转)Python之文件读写
  4. 参考美团、饿了么 && localStorage
  5. nodejs(二) --- 重要知识点回顾
  6. 用 Python 构建 web 应用
  7. bnu 28890 &zoj 3689——Digging——————【要求物品次序的01背包】
  8. 【Ubuntu】ubuntu 16.04 设置root用户初始密码
  9. 10、选择框:ion-select
  10. C# url获取图片流转字符串