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.什么是异步 什么是异步回调 为什么需要异步回调
异步
提交任务不需要等待任务完成,就执行下一行
指的是一种提交任务的方式。
异步回调
当任务或阻塞执行完成以后,在叫来其他函数继续执行
为什么需要异步回调
子进程帮助主进程完成任务 处理任务的结果应该交还给主进程