python3,进程间的通信

简介: 本文来源于python 3.5版本的官方文档multiprocessing模块为进程间通信提供了两种方法:1.进程队列queueThe Queue class is a near clone of queue.Queue。

本文来源于python 3.5版本的官方文档

multiprocessing模块为进程间通信提供了两种方法:

1.进程队列queue

The Queue class is a near clone of queue.Queue。
Queues are thread and process safe。

使用进程队列,可以在两个进程间传递消息。其用法跟queue.Queue类似。

使用方法:

from multiprocessing import Process,Queue
def func(q):
    q.put([42,None,"hello"])    #把一个列表放入一个队列中

if __name__=="__main__":
    q1=Queue()        #定义一个队列
    p1=Process(target=func,args=(q1,))      #实例化一个进程
    p1.start()  #启动进程 
    print(q1.get())     #从队列中取出一个项目,并打印 
    p1.join()   #阻塞进程

返回值:

[42, None, 'hello']

在进程间通信可以使用python中所有的数据类型,但这种方式并不是真正意义上的进程间的通信。

2.管道pipe

The Pipe() function returns a pair of connection objects connected by a pipe which by default is duplex (two-way).
The two connection objects returned by Pipe() represent the two ends of the pipe. Each connection object has send() and recv() methods (among others).
Note that data in a pipe may become corrupted if two processes (or threads) try to read from or write to the same end of the pipe at the same time. 
Of course there is no risk of corruption from processes using different ends of the pipe at the same time.

pipe()返回两个连接对象代表pipe的两端。每个连接对象都有send()方法和recv()方法。

但是如果两个进程或线程对象同时读取或写入管道两端的数据时,管道中的数据有可能会损坏。

当进程使用的是管道两端的不同的数据则不会有数据损坏的风险。

使用方法:

from multiprocessing import Process,Pipe

def func(conn):
    conn.send([42,None,"hello"])    #连接发出信息
    conn.close()        #关闭连接 

if __name__=="__main__":
    parent_conn,child_conn=Pipe()       #定义一个管道
    p1=Process(target=func,args=(child_conn,))  #实例化一个进程
    p1.start()      #启动进程 
    print(parent_conn.recv())       #连接接收信息并打印
    p1.join()   #阻塞进程 

返回结果:

[42, None, 'hello']

本文来源于python 3.5版本的官方文档

目录
相关文章
|
9天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
1月前
|
消息中间件 Unix Linux
Linux进程间通信(IPC)介绍:详细解析IPC的执行流程、状态和通信机制
Linux进程间通信(IPC)介绍:详细解析IPC的执行流程、状态和通信机制
43 1
|
1月前
|
并行计算 安全 Unix
Python教程第8章 | 线程与进程
本章主要讲解了线程与进程的概念,多线程的运用以及Python进程的相关案例学习
36 0
|
1月前
|
分布式计算 并行计算 Java
浅析Python自带的线程池和进程池
浅析Python自带的线程池和进程池
79 0
|
27天前
|
安全 Python
Python中的并发编程:多线程与多进程技术探究
本文将深入探讨Python中的并发编程技术,重点介绍多线程和多进程两种并发处理方式的原理、应用场景及优缺点,并结合实例分析如何在Python中实现并发编程,以提高程序的性能和效率。
|
3天前
|
调度 Python
Python多线程、多进程与协程面试题解析
【4月更文挑战第14天】Python并发编程涉及多线程、多进程和协程。面试中,对这些概念的理解和应用是评估候选人的重要标准。本文介绍了它们的基础知识、常见问题和应对策略。多线程在同一进程中并发执行,多进程通过进程间通信实现并发,协程则使用`asyncio`进行轻量级线程控制。面试常遇到的问题包括并发并行混淆、GIL影响多线程性能、进程间通信不当和协程异步IO理解不清。要掌握并发模型,需明确其适用场景,理解GIL、进程间通信和协程调度机制。
18 0
|
14天前
|
监控 物联网 Linux
python测试串口最大通信速率
【4月更文挑战第5天】
|
26天前
|
并行计算 Python
Python中的并发编程:多线程与多进程的比较
在Python编程中,实现并发操作是提升程序性能的重要手段之一。本文将探讨Python中的多线程与多进程两种并发编程方式的优劣及适用场景,帮助读者更好地选择合适的方法来提高程序运行效率。
|
30天前
|
消息中间件 网络协议 API
Python语言的进程通讯及网络
Python语言的进程通讯及网络
|
1月前
|
消息中间件 Linux API
跨进程通信设计:Qt 进程间通讯类全面解析
跨进程通信设计:Qt 进程间通讯类全面解析
77 0