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()
进程池
最新推荐文章于 2021-02-22 05:53:31 发布