以下是“Python实现跨进程(跨py文件)通信示例”的完整攻略,包含两个示例。
简介
在本攻略中,我们将介绍如何使用Python实现跨进程(跨py文件)通信。通过攻略的学习,您将了解如何使用socket和multiprocessing等模块实现跨进程通信。
示例一:使用socket实现跨进程通信
以下是使用socket实现跨进程通信的示例:
# server.py
import socket
HOST = '127.0.0.1'
PORT = 5000
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print('Connected by', addr)
while True:
data = conn.recv(1024)
if not data:
break
conn.sendall(data)
# client.py
import socket
HOST = '127.0.0.1'
PORT = 5000
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
print('Received', repr(data))
在上述代码中,我们使用socket模块实现了跨进程通信。在server.py中,我们使用socket.socket方法创建一个socket对象,并使用bind方法绑定IP地址和端口号。在listen方法中,我们指定socket的最大连接数。在accept方法中,我们等待客户端连接,并返回一个新的socket对象和客户端地址。在while循环中,我们接收客户端发送的数据,并使用sendall方法将数据返回给客户端。在client.py中,我们使用socket.socket方法创建一个socket对象,并使用connect方法连接到服务器。在sendall方法中,我们发送数据给服务器。在recv方法中,我们接收服务器返回的数据。
示例二:使用multiprocessing实现跨进程通信
以下是使用multiprocessing实现跨进程通信的示例:
# server.py
from multiprocessing import Process, Queue
def worker(q):
while True:
data = q.get()
if data is None:
break
print(data)
if __name__ == '__main__':
q = Queue()
p = Process(target=worker, args=(q,))
p.start()
q.put('Hello, world')
q.put(None)
p.join()
# client.py
from multiprocessing import Process, Queue
if __name__ == '__main__':
q = Queue()
p = Process(target=worker, args=(q,))
p.start()
q.put('Hello, world')
q.put(None)
p.join()
在上述代码中,我们使用multiprocessing模块实现了跨进程通信。在server.py中,我们使用Process方法创建一个进程,并使用Queue方法创建一个队列。在worker方法中,我们循环读取队列中的数据,并输出。在main方法中,我们启动进程,并向队列中添加数据。在client.py中,我们使用Process方法创建一个进程,并使用Queue方法创建一个队列。在main方法中,我们启动进程,并向队列中添加数据。
结论
通过攻略的学习,我们了解了如何使用Python实现跨进程(跨py文件)通信。在使用socket模块实现跨进程通信时,我们可以使用socket.socket方法创建一个socket对象,并使用bind方法绑定IP地址和端口号。在使用multiprocessing模块实现跨进程通信时,我们可以使用Process方法创建一个进程,并使用Queue方法创建一个队列。无论使用哪种方法,我们都可以实现Python中的跨进程通信。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现跨进程(跨py文件)通信示例 - Python技术站