Python多进程-进程间数据的传递
两个进程间的数据是独立的,要进行数据传递的话可通过几个方法
Queue
通过队列来进行进程间数据的传递
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" from multiprocessing import Process, Queue def Child_Process(n):
n.put("Data From Child Process") if __name__ == '__main__':
q = Queue()
p = Process(target=Child_Process, args=(q,))
p.start()
print(q.get())
p.join()
运行结果
父进程中声明了一个queue,也生成了一个子进程,然后父进程把queue克隆一份,然后通过pickle序列化queue,再把queue进行pickle反序列化传入子进程
两个进程之间通过进程queue进行数据传递需要经过pickle的序列化和反序列化
Pipe
通过管道来进行进程间数据的传递
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" from multiprocessing import Process, Pipe def f(conn):
conn.send("Data_1 from Conn_1")
conn.send("Data_2 from Conn_1")
print("Conn_1: ",conn.recv())
conn.close() if __name__ == '__main__':
conn_1, conn_2 = Pipe() #生成管道的两边,分别传给两个进程
p = Process(target=f, args=(conn_1,))
p.start()
print("Conn_2: ",conn_2.recv())
print("Conn_2: ",conn_2.recv())
conn_2.send("Data_1 from Conn_2")
p.join()
运行结果
上面是两边的管道收发数据的次数一样,如果把conn_2给conn_1发送数据的那一行代码去掉
脚本就会在conn_1接收数据处一直等着
Python多进程-进程间数据的传递的更多相关文章
- Python多进程-进程间数据的共享
不同的进程不能同时修改一份数据,但是不同的进程能对一份数据进行修改 可通过Manager来实现进程间的数据共享 # -*- coding:utf-8 -*- __author__ = "Mu ...
- Python进阶----进程间数据隔离, join阻塞等待, 进程属性, 僵尸进程和孤儿进程, 守护进程
Python进阶----进程间数据隔离, join阻塞等待, 进程属性, 僵尸进程和孤儿进程, 守护进程 一丶获取进程以及父进程的pid 含义: 进程在内存中开启多个,操作系统如何区分这些进程, ...
- 【python】-- 多进程的基本语法 、进程间数据交互与共享、进程锁和进程池的使用
多进程 进程之间是相互独立的,python是启动进程的时候,是启动的是原生进程.进程是没有GIL锁的,而且不存在锁的概念,进程之间的数据式不能共享的,而线程是可以的. 1.进程的定义 用mulipro ...
- Python 进程间数据交互
进程间通信:进程之间必须需要中间件. 不同进程间内存是不共享的,要想实现两个进程间的数据交换 Queues:实现传输两个进程的数据 线程queue,访问数据只能在一个进程内进行线程与线程之间的 ...
- 进程间数据传递:Queue,Pipe 进程间数据共享:Manager
1.使用multiprocessing模块的Queue实现数据传递 ''' 进程间通讯: Queue,用法跟线程里的Queue一样,put,get 线程queue没有做序列化,进程queue做序列化了 ...
- 鸿蒙内核源码分析(消息队列篇) | 进程间如何异步传递大数据 | 百篇博客分析OpenHarmony源码 | v33.02
百篇博客系列篇.本篇为: v33.xx 鸿蒙内核源码分析(消息队列篇) | 进程间如何异步传递大数据 | 51.c.h .o 进程通讯相关篇为: v26.xx 鸿蒙内核源码分析(自旋锁篇) | 自旋锁 ...
- day12学python 多进程+进程池
多进程+进程池 多进程(不同进程不可直接访问数据) 引入(多进程套线程) 多进程 需导入multiprocessing模块 模板示例1 import threading,time,multiproce ...
- python开发进程:共享数据&进程池
一,共享数据 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合 通过消息队列交换数据.这样极大地减少了对使用锁定和其他同步手段的需求, 还可以扩展 ...
- 子进程回收资源两种方式,僵尸进程与孤儿进程,守护进程,进程间数据隔离,进程互斥锁,队列,IPC机制,线程,守护线程,线程池,回调函数add_done_callback,TCP服务端实现并发
子进程回收资源两种方式 - 1) join让主进程等待子进程结束,并回收子进程资源,主进程再结束并回收资源. - 2) 主进程 “正常结束” ,子进程与主进程一并被回收资源. from multipr ...
随机推荐
- WEB开发中常见漏洞
1.sql注入 SQL注入在黑客领域是一种非常常见的攻击手段,大家应该都听说过很多数据泄漏的案例,其中大部分都是采用SQL注入来获取数据的. SQL注入一般是前端向后台提交数据的时候,在数据中加入SQ ...
- springboot 配置过滤器
能配置例外 先写配置文件类 FilterConfig.java package com.ty.tyzxtj.config; import javax.servlet.Filter; import or ...
- 导入Jquery.min.js时 JQuery 上打红X了
问题解决:右击jquery.min.js——>MyEclipse——>点击Exclude From Validation——>点击Run Validation 即可
- skynet中的各种锁
最近读skynet c语言部分的源码,发现有好多锁的使用和gcc提供的一些原子操作.看到这些东西,对于我这个newbee来说实在有些hold不住.但为了了解并进一步掌握,还是决定好好分析一下.不足之处 ...
- JavaWeb -- JSP+JavaBean模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. JSP+JavaBean模式适合开发业务 ...
- Flume-NG源码阅读之HBaseSink
关于HBase的sink的所有内容均在org.apache.flume.sink.hbase包下. 每个sink包括自己定制的,都extends AbstractSink implements Con ...
- NovaException: Unexpected vif_type=binding_failed
nova/virt/libvirt/vif.py: _("Unexpected vif_type=%s") % vif_type) NovaException: Unexpecte ...
- ComboBoxStyle和ToggleButton
<Style x:Key="ComboBoxStyle" TargetType="{x:Type ComboBox}"> <Setter ...
- Java 反射机制应用实践
反射基础 p.s: 本文需要读者对反射机制的API有一定程度的了解,如果之前没有接触过的话,建议先看一下官方文档的Quick Start(https://docs.oracle.com/javase/ ...
- middle school
One of the most difficult transitions faced by parents and youth is that of going from elementary to ...