各个逻辑都不懂

协程  实现 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

https://www.cnblogs.com/Eva-J/articles/10738165.html

posted @ 2019-04-20 17:48  learnacode  阅读(155)  评论(0编辑  收藏  举报