|
导入必要的模块- import socket
- from multiprocessing import Process
复制代码
定义一个函数用于创建socket客户端:- def client_process(server_address, port):
- # 创建socket对象
- client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- # 连接到服务器
- client_socket.connect((server_address, port))
- # 发送一些数据到服务器
- client_socket.sendall(b"Hello, server!")
- # 接收服务器的响应
- response = client_socket.recv(1024)
- print(f"Received from server: {response.decode()}")
- # 关闭socket连接
- client_socket.close()
复制代码
创建并启动多个进程:
- def main():
- # 服务器的地址和端口号
- server_address = 'localhost'
- port = 12345
- # 创建进程列表
- processes = []
- # 创建并启动多个进程
- for i in range(5): # 例如,创建5个客户端进程
- p = Process(target=client_process, args=(server_address, port))
- p.start()
- processes.append(p)
-
- # 等待所有进程完成
- for p in processes:
- p.join()
-
- if __name__ == '__main__':
- main()
复制代码 确保服务器的IP地址和端口号正确无误,并且服务器已经准备好接受连接。
在多进程环境中使用全局解释器锁(GIL)可能会限制并发性能在某些情况下,尤其是在CPU密集型任务中。但对于I/O密集型任务(如网络通信),Python的多进程通常表现良好。如果你确实遇到了性能瓶颈,可以考虑使用multiprocessing.Pool或异步I/O(例如使用asyncio库)。
|
|