博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程间通信
阅读量:6594 次
发布时间:2019-06-24

本文共 2223 字,大约阅读时间需要 7 分钟。

import timefrom multiprocessing import Process, Queue, Pool, Manager, Pipe# def producer(queue):#     queue.put("a")#     time.sleep(2)## def consumer(queue):#     time.sleep(2)#     data = queue.get()#     print(data)## if __name__ == "__main__":#     queue = Queue(10)#     my_producer = Process(target=producer, args=(queue,))#     my_consumer = Process(target=consumer, args=(queue,))#     my_producer.start()#     my_consumer.start()#     my_producer.join()#     my_consumer.join()#共享全局变量通信#共享全局变量不能适用于多进程编程,可以适用于多线程# def producer(a):#     a += 100#     time.sleep(2)## def consumer(a):#     time.sleep(2)#     print(a)## if __name__ == "__main__":#     a = 1#     my_producer = Process(target=producer, args=(a,))#     my_consumer = Process(target=consumer, args=(a,))#     my_producer.start()#     my_consumer.start()#     my_producer.join()#     my_consumer.join()#multiprocessing中的queue不能用于pool进程池#pool中的进程间通信需要使用manager中的queue# def producer(queue):#     queue.put("a")#     time.sleep(2)## def consumer(queue):#     time.sleep(2)#     data = queue.get()#     print(data)## if __name__ == "__main__":#     queue = Manager().Queue(10)#     pool = Pool(2)##     pool.apply_async(producer, args=(queue,))#     pool.apply_async(consumer, args=(queue,))##     pool.close()#     pool.join()#通过pipe实现进程间通信#pipe的性能高于queue# def producer(pipe):#     pipe.send("bobby")## def consumer(pipe):#     print(pipe.recv())## if __name__ == "__main__":#     recevie_pipe, send_pipe = Pipe()#     #pipe只能适用于两个进程#     my_producer= Process(target=producer, args=(send_pipe, ))#     my_consumer = Process(target=consumer, args=(recevie_pipe,))##     my_producer.start()#     my_consumer.start()#     my_producer.join()#     my_consumer.join()def add_data(p_dict, key, value):    p_dict[key] = valueif __name__ == "__main__":    progress_dict = Manager().dict()    from queue import PriorityQueue    first_progress = Process(target=add_data, args=(progress_dict, "bobby1", 22))    second_progress = Process(target=add_data, args=(progress_dict, "bobby2", 23))    first_progress.start()    second_progress.start()    first_progress.join()    second_progress.join()    print(progress_dict)

 

转载于:https://www.cnblogs.com/Erick-L/p/8922496.html

你可能感兴趣的文章
Citrix服务器虚拟化之二十九 XenApp 6.5发布服务器上的应用程序
查看>>
工作的准备:atoi,itoa,strcpy,memcpy,strcmp,二分查找,strcat
查看>>
Android 在闹钟开机时,如何解决开机动画没有播完就进入Launcher M
查看>>
2014第11周三
查看>>
jQuery File Upload跨域上传
查看>>
重构第27天 去除上帝类(Remove God Classes)
查看>>
用 Hexo + Next + GitHubPages 搭建漂亮的免费博客
查看>>
近期暴涨的BCH前景利好还是利空?未来能否撼动龙头老大的地位?
查看>>
少侠,留步,图片预览术
查看>>
304与缓存
查看>>
前端面试题-display:none和visibility:hidden的区别
查看>>
Vue.js源码学习三 —— 事件 Event 学习
查看>>
vscode编辑器
查看>>
nuxt element-ui 上cdn
查看>>
利用K8S技术栈打造个人私有云(连载之:K8S环境理解和练手)
查看>>
学习笔记CB004:提问、检索、回答、NLPIR
查看>>
Android性能优化之UI实战
查看>>
Facebook Docusaurus 中文文档 siteConfig.js 详解
查看>>
iMooc-张鑫旭 CSS
查看>>
后台管理系统相关
查看>>