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

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

"""    IPC 指的是进程间通讯        之所以开启子进程 肯定需要它帮我们完成任务 很多情况下 需要将数据返回给父进程        然而 进程内存是物理隔离的    解决方案:    1.将共享数据放到文件中   就是慢    2.管道   subprocess中的那个  管道只能单向通讯  必须存在父子关系    3.共享一块内存区域  得操作系统帮你分配  速度快"""from multiprocessing import  Process,Managerimport timedef task(dic):    print("子进程xxxxx")    # li[0] = 1    # print(li[0])    dic["name"] = "xx"if __name__ == '__main__':    m = Manager()    # li = m.list([100])    dic = m.dict({})    # 开启子进程    p = Process(target=task,args=(dic,))    p.start()    time.sleep(3)    print(dic)

 

结果:子进程xxxxx{
'name': 'xx'}

 

 

 

"""    进程间通讯的另一种方式 使用queue    queue  队列    队列的特点:        先进的先出        后进后出        就像扶梯"""from multiprocessing import Process,Queue# 基础操作 必须要掌握的# 创建一个队列# q = Queue()# # 存入数据# q.put("hello")# q.put(["1","2","3"])# q.put(1)# # 取出数据# print(q.get())# print(q.get())# print(q.get())# print(q.get())# 阻塞操作 必须掌握# q = Queue(3)# # # 存入数据# q.put("hello",block=False)# q.put(["1","2","3"],block=False)# q.put(1,block=False)# # 当容量满的时候 再执行put 默认会阻塞直到执行力了get为止# # 如果修改block=False 直接报错 因为没地方放了# # q.put({},block=False)## # # # 取出数据# print(q.get(block=False))# print(q.get(block=False))# print(q.get(block=False))# # 对于get   当队列中中没有数据时默认是阻塞的  直达执行了put# # 如果修改block=False 直接报错 因为没数据可取了# print(q.get(block=False))# 了解q = Queue(3)q.put("q",timeout=3)q.put("q2",timeout=3)q.put("q3",timeout=3)# 如果满了 愿意等3秒  如果3秒后还存不进去 就炸# q.put("q4",timeout=3)print(q.get(timeout=3))print(q.get(timeout=3))print(q.get(timeout=3))# 如果没了 愿意等3秒  如果3秒后还取不到数据 就炸     print(q.get(timeout=3))   #引发错误行
结果:qq2q3Traceback (most recent call last):  File "F:/oldboy课程记录/day36/代码/6.进程间通讯2.py", line 59, in 
print(q.get(timeout=3)) File "F:\Python\lib\multiprocessing\queues.py", line 105, in get raise Emptyqueue.Empty

 

转载于:https://www.cnblogs.com/TF511/p/9932271.html

你可能感兴趣的文章
全文检索-Elasticsearch (四) elasticsearch.net 客户端
查看>>
Oracle DBMS_SESSION
查看>>
sublime复制当前行到下一行
查看>>
WPF 3D变换应用
查看>>
ArchLinux安装开源VMware Tools
查看>>
DB2 锁升级示例1
查看>>
16.RDD实战
查看>>
MainFrame知识小结(20120210)—dfsort/syncsort中的数据类型
查看>>
D - Flip tile
查看>>
Java连接RabbitMQ之创建连接
查看>>
开户vim编程之--cscope支持
查看>>
python数据类型图解
查看>>
C#微信登录-手机网站APP应用
查看>>
HTML5实践 -- iPhone Safari Viewport Scaling Bug
查看>>
一位数据挖掘成功人士 给 数据挖掘在读研究生 的建议
查看>>
Python3.6.0安装
查看>>
hdu1049
查看>>
H5项目常见问题及注意事项
查看>>
索尼(SONY) SVE1512S7C 把WIN8降成WIN7图文教程
查看>>
时间模块 && time datetime
查看>>