IO模型

2018-06-18 02:42:33来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

解决问题是:服务端,网络IO

知识点回顾

from threading import Thread
from socket import *

def talk(conn):
    while True:
        try:
            data = conn.recv(1024)
            if not data: break
            conn.send(data.uuper())
        except ConnectionResetError:
            break
    conn.close()

server = socket()  # 默认TCP
server.bind(('127.0.0.1', 8080))
server.listen(5)

# 链接
while True:
    conn, addr = server.accept()
    print(addr)

    # 通信
    t = Thread(target=talk,args=(conn,))
    t.start()

server.close()


# 复习
from gevent import monkey,spawn;monkey.patch_all()
import time

def f1():
    print('from f1 1')
    time.sleep(3)
    print('from f1 2')

def f2():
    print('from f2 1')
    time.sleep(2)
    print('from f2 2')

def f3():
    print('from f3 1')
    time.sleep(5)
    print('from f3 2')

g1=spawn(f1)
g2=spawn(f2)
g3=spawn(f3)

# 让主线程等任务执行完
g1.join()
g2.join()
g3.join()



from gevent import monkey,spawn;monkey.patch_all()
from socket import *

def talk(conn):
    while True:
        try:
            data = conn.recv(1024)
            if not data: break
            conn.send(data.upper())
        except ConnectionResetError:
            break
    conn.close()

def server(ip,port,backlog=5):
    s = socket()  # 默认TCP
    s.bind((ip, port))
    s.listen(backlog)

    # 链接
    while True:
        conn, addr = s.accept()
        print(addr)

        # 通信
        g = spawn(talk,conn)
        # g.join() # 因为通信里有IO,主线程不需要另外等待的任务

    server.close()

if __name__ == '__main__':
    server('127.0.0.1',8080)
套接字服务端回顾

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Python基础——列表

下一篇:Python3爬虫(八) 数据存储之TXT、JSON、CSV