各个逻辑都不懂

协程  实现 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 @   learnacode  阅读(157)  评论(0编辑  收藏  举报
编辑推荐:
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
阅读排行:
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?
点击右上角即可分享
微信分享提示