import multiprocessing
import socket
import multiprocessing
import time
def main():
#服务器tcp服务器对象
tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#设置我们的端口地址重用
tcp_server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,
1)
#绑定端口号
tcp_server.bind((
"",
8989))
#改成被动模式
tcp_server.listen(
True)
# 开启一个线程池
pool = multiprocessing.Pool(
3)
# 这个说明线程池最大是3个线程同时运行,如果不设置那么就是你的cpu个数
list_client = list()
while True:
client,address = tcp_server.accept()
print(
"recv:",client)
list_client.append(client)
pool.apply_async(client_exec, args=(client,))
# for client_new in list_client:
# print(client_new)
# pool.close() # 说明不能添加到进程池了
# pool.join() # 让进程池全部执行完再执行主进程
#我们可以不写,但做为一个垃圾回收程序员,我们一般都会手动去回收一些数据,在数据量特别大的时候
for client_state
in list_client:
if client != client_state:
#说明不是最新的
client_state.close()
#关闭
list_client.remove(client_state)
#关闭
print(list_client)
def client_exec(client):
print(
"close:",client)
data = client.recv(
1024).decode()
print(data)
client.send(
"lele".encode(
'utf-8'))
client.close()
if __name__ ==
'__main__':
main()