各个逻辑都不懂
协程 实现 socket 并发异步功能
socket.py
# 事情不想好 再做 真不如不做 from gevent import monkey;monkey.patch_all() import socket import gevent sk = socket.socket() sk.bind(('127.0.0.1',9000)) sk.listen() def fuc(conn): while 1: #这边的while和client的while是对应的 #client子线程里有while不加守护线程的话无法退出 msg = conn.recv(1024).decode('utf-8') conn.send(msg.upper().encode('utf-8')) #(xxxx.xx()).encode() 这里写错了 # print(msg) while 1: # 一直得要连接 conn, _ = sk.accept() #这里没每次接受 放出去了 gevent.spawn(fuc,conn) #这里没传参conn 上面没有 # g_l = [] # g.join() #可以识别的 不用join阻塞 就是说
client.py 以及很多 client.py
# from gevent import monkey;monkey.patch_all() #这里不用 import socket import gevent from threading import Thread # sk = socket.socket() # sk.connect(('127.0.0.1', 9000)) # 把连接放外面传输很不稳定 def f(i): sk = socket.socket() sk.connect(('127.0.0.1', 9000)) while 1: sk.send(('bye%s' % i).encode('utf-8')) print(sk.recv(1024)) # g_l = [] for i in range(2): # 500个 while 如果子线程是while的话 不退出 没while则500个数退出 # g = gevent.spawn(f) # g_l.append(g) # gevent.joinall(g_l) Thread(target=f,args=(i,)).start() #不是开协程 是开线程 用start
10行代码:(你记得的才叫代码)
代码 while 1 (对应)不退 conn 1 (参数) 打开500个线程 1 sk.accept1 sk= scoket.socket()1 sk.connent1在函数里 monke1可以识别sk 不用join1 join 什么情况?保证time运行完 gevent 不用1 gevent 也必须join怎么回事?
https://gitee.com/python_stack_20/teaching_plan/issues/IVM5B