py并发_Pipe通讯笔记

进程数据独立

进程是程序运行的基本单位,那么每一套程序内部都一定有属于自己的存储数据和程序单元,但是在一个操作系统中每一个进程都是完全独立的,这样一来彼此之间如果要想进行通讯,那么就不能直接进行访问了。

Pipe进程通讯管道

每一个进程彼此独立,如果要想让进程进行数据的传输,就可以通过一种管道流的形式来进行处理,通过一个特定的管道实现IO的输入和输出。

管道(Pipe)是系统进程通讯的一种技术手段,开发者可以利用管道创建两个通讯连接对象,这两个连接对象可以实现单端通讯也可以实现双端通讯

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# coding: UTF-8
import multiprocessing
def send_data(conn, data): # 数据的发送
conn.send(["小李","学习",data]) # 进行列表数据的发送
def receive_data(conn): # 数据接收
print("[接收数据]%s" % conn.recv()) #接收管道发送来的数据
def main():
conn_send, conn_recv = multiprocessing.Pipe() # 管道分为接收和发送
# 创建两个子进程,同时将两个管道的对象传递到不同的进程处理函数之中
process_send = multiprocessing.Process(target=send_data, args=(conn_send,"www.66xk.wang"))
process_receive = multiprocessing.Process(target=receive_data, args=(conn_recv,))
process_send.start() #启动进程
process_receive.start()
if __name__ == "__main__":
main()

[接收数据][‘小李’, ‘学习’, ‘www.66xk.wang']

进程已结束,退出代码0

总结

如果要想发送则一定要首先创建管道,管道是决定能否发送和接收数据的核心关键所在。


py并发_Pipe通讯笔记
https://blog.wangxk.cc/2020/01/30/py并发-Pipe通讯笔记/
作者
Mike
发布于
2020年1月30日
许可协议