作业

1.协程的总结 明早抽查提问 答不上的五遍
  什么是协程

  让单线程可以并发处理的任务
  为什么需要协程

  因为cpython 由于GIL 导致同一时间只有一个线程再跑
  协程的使用场景

2.使用协程完成TCP套接字编程 支持多客户端同时访问

from gevent import monkey
monkey.patch_all()
import gevent
import socket
from threading import current_thread
server  = socket.socket()
server.bind(("127.0.0.1",9999))
server.listen(5)

def task(client):
    while True:
        try:
            data = client.recv(1024)
            if not data:
                client.close()
                break
            send_data = data.upper()
            client.send(send_data)
        except ConnectionResetError:
            print("%s客户端错误断开"%client,current_thread())
            client.close()
            break

while True:
    client,addr =server.accept()
    gevent.spawn(task,client)

客户端

import socket

client = socket.socket()
client.connect(("127.0.0.1",9999))

while True:
    msg = input(">>>").strip()
    if not msg:
        continue
    client.send(msg.encode("utf-8"))
    data = client.recv(1024)
    print(data.decode("utf-8"))

3.什么是异步 什么是异步回调 为什么需要异步回调

异步  

提交任务不需要等待任务完成,就执行下一行

指的是一种提交任务的方式。

 

异步回调

当任务或阻塞执行完成以后,在叫来其他函数继续执行

为什么需要异步回调

 子进程帮助主进程完成任务  处理任务的结果应该交还给主进程

 

  

posted @ 2018-11-13 18:15  msjaxuexi  阅读(84)  评论(0编辑  收藏  举报