TCP服务器使用线程池代码
时间: 2023-07-01 12:12:27 浏览: 62
下面是一个简单的基于线程池的 TCP 服务器代码示例:
```python
import socket
import threading
import queue
# 定义线程池大小
THREAD_POOL_SIZE = 10
# 定义任务队列
task_queue = queue.Queue()
# 定义线程池
threads = []
# 定义 TCP 服务器
def tcp_server():
# 创建 TCP 套接字并绑定端口
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('127.0.0.1', 8888))
server_socket.listen(5)
while True:
# 接受客户端连接
client_socket, client_address = server_socket.accept()
# 将任务加入任务队列中
task_queue.put((client_socket, client_address))
# 定义线程池中的线程函数
def worker():
while True:
# 从任务队列中取出任务
client_socket, client_address = task_queue.get()
# 处理客户端请求
print(f"Handling client {client_address}")
client_socket.send(b"Hello, client!")
client_socket.close()
if __name__ == '__main__':
# 创建线程池并启动线程
for i in range(THREAD_POOL_SIZE):
t = threading.Thread(target=worker)
t.start()
threads.append(t)
# 启动 TCP 服务器
tcp_server()
# 等待线程池中的线程完成任务
for t in threads:
t.join()
```
在这个示例中,我们使用了一个任务队列来存储客户端连接和地址信息。当客户端连接到服务器时,服务器将任务添加到队列中。线程池中的线程将从队列中获取任务并处理客户端请求。当任务完成时,线程将返回线程池并等待下一个任务。