
from gevent import monkey;monkey.patch_all() from socket import * from gevent import spawn #导入spawn之前一定要传入monkey #俩个io密集型任务 def comun(conn): while True: # 链接循环 try: data = conn.recv(1024) if len(data) == 0: break conn.send(data.upper()) except ConnectionResetError: break conn.close() def server(ip,port,backlog=5): server=socket(AF_INET,SOCK_STREAM) server.bind((ip,port)) server.listen(backlog) while True: # 链接循环 conn,client_addr= server.accept() print(client_addr) # 通信 spawn(comun,conn) if __name__ == '__main__': g1=spawn(server,'127.0.0.1',8080) g1.join()

from threading import Thread,current_thread #开线程 from socket import * def client(): client= socket(AF_INET,SOCK_STREAM) client.connect(('127.0.0.1',8080)) n=0 while True: msg='%s say hello %s' %(current_thread().name,n) n+=1 client.send(msg.encode('utf-8')) data=client.recv(1024) print(data.decode('utf-8')) if __name__ == '__main__': for i in range(500): t=Thread(target=client) t.start()
实现了在单线程下承受500个并发量