前言:
当前我们对“python 进程通信”大概比较着重,姐妹们都想要知道一些“python 进程通信”的相关知识。那么小编也在网络上汇集了一些有关“python 进程通信””的相关文章,希望大家能喜欢,姐妹们一起来学习一下吧!在 Python 中,可以使用多种方式实现进程间的通信,其中包括以下几种主要方法:
管道(Pipe):使用 multiprocessing.Pipe() 函数创建管道,它返回连接的两个端点,每个端点都有自己的 send() 和 recv() 方法,可以通过这些方法发送和接收数据。
from multiprocessing import Process, Pipedef sender(conn): conn.send("Hello from sender")def receiver(conn): msg = conn.recv() print("Message received:", msg)if __name__ == "__main__": parent_conn, child_conn = Pipe() p1 = Process(target=sender, args=(child_conn,)) p2 = Process(target=receiver, args=(parent_conn,)) p1.start() p2.start() p1.join() p2.join()队列(Queue):使用 multiprocessing.Queue() 创建进程安全的队列,可以在多个进程之间共享数据。
from multiprocessing import Process, Queuedef worker(queue): queue.put("Hello from worker")if __name__ == "__main__": q = Queue() p = Process(target=worker, args=(q,)) p.start() p.join() print("Message received:", q.get())共享内存(Shared Memory):使用 multiprocessing.Value 和 multiprocessing.Array 创建共享内存,多个进程可以访问同一块内存空间。
from multiprocessing import Process, Valuedef counter(counter_value): for _ in range(5): counter_value.value += 1if __name__ == "__main__": counter_value = Value("i", 0) p1 = Process(target=counter, args=(counter_value,)) p2 = Process(target=counter, args=(counter_value,)) p1.start() p2.start() p1.join() p2.join() print("Counter value:", counter_value.value)套接字(Socket):使用套接字实现进程间通信,可以使用 socket 或 multiprocessing.connection 模块创建套接字。
import socketimport multiprocessingdef sender(conn): # 创建套接字 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定套接字到本地地址 s.bind(('127.0.0.1', 12345)) # 监听连接 s.listen(5) # 等待客户端连接 conn, addr = s.accept() print('Connected by', addr) # 发送消息 conn.sendall(b'Hello, world') # 关闭连接 conn.close()def receiver(conn): # 创建套接字 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接到发送者 s.connect(('127.0.0.1', 12345)) # 接收消息 data = s.recv(1024) print('Received', repr(data)) # 关闭连接 s.close()if __name__ == "__main__": # 创建进程 p1 = multiprocessing.Process(target=sender, args=('',)) p2 = multiprocessing.Process(target=receiver, args=('',)) # 启动进程 p1.start() p2.start() # 等待进程结束 p1.join() p2.join()
以上是常见的几种方法,可以根据具体需求选择合适的通信方式。
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #python 进程通信