• python3.6环境下安装gevent,附协程TCP服务器客户端代码


    1、执行 pip3 install gevent

    2、报错 importlib._bootstrap' has no attribute 'SourceFileLoader'

    3、重新安装pip3

        wget https://bootstrap.pypa.io/pip/3.6/get-pip.py
        python3 get-pip.py 
        pip3 -v 

    4、再次执行 pip3 install gevent

    5、# python3
    Python 3.6.8 (default, Nov 16 2020, 16:55:22) 
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import gevent

    正常导入模块

    附代码

    文件名:coroutine-tcpserver.py

    #!/bin/env python3
    from gevent import monkey;monkey.patch_all()
    import socket
    from gevent import spawn

    def communication(conn):
        while True:
            try:
                data = conn.recv(1024)
                if len(data) == 0:break
                conn.send(data.upper()) 
            except ConnectionResetError as e:
                print(e)
                break
        conn.close()          


    def server(ip,port):
        server = socket.socket()
        server.bind((ip,port))
        server.listen(5)
        while True:
            conn,addr = server.accept()
            spawn(communication,conn)       


    if __name__=='__main__':
        g1 = spawn(server,'127.0.0.1',8080)
        g1.join()

    文件名:coroutine-tcpclient.py

    #!/bin/env python3
    from threading import Thread,current_thread
    import socket

    def x_client():
        client = socket.socket()
        client.connect(('127.0.0.1',8080))
        n = 0
        while True:
            msg = ' %s sya 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=x_client)
            t.start()

     运行结果 

     THREAD-344 SYA HELLO 76
     THREAD-228 SYA HELLO 77
     THREAD-410 SYA HELLO 67
     THREAD-385 SYA HELLO 69
     THREAD-355 SYA HELLO 80
     THREAD-244 SYA HELLO 85
     THREAD-271 SYA HELLO 82
     THREAD-283 SYA HELLO 71
     THREAD-456 SYA HELLO 59
     THREAD-97 SYA HELLO 68
     THREAD-263 SYA HELLO 64

  • 相关阅读:
    使用CAPL 内置函数 memcpy 和memcmp 处理数组的若干问题
    猿创征文| Linux——基础I/O3| 缓冲区|自己设计缓冲区实现文件操作|minishell重定向
    Unit2_1:动态规划DP
    springcloud21:Nacos总结
    微服务框架入门(springcloud)
    【李沐深度学习笔记】自动求导
    C# CS0120解决办法
    Django: 2. 创建菜单界面
    JavaScript规范
    顺序表的应用-通讯录
  • 原文地址:https://blog.csdn.net/lepton126/article/details/126883813