摘要: from gevent import monkey;monkey.patch_all()from gevent.queue import Queue #队列 gevent中的队列import geventimport random#这个猴子补丁,all是所有能切换协程的地方都切换,包含了socket,所以一般都用allqq = Queue(3)def produceer(): wh... 阅读全文
posted @ 2018-11-25 18:56 山…隹 阅读(522) 评论(0) 推荐(0)
摘要: 并发:要做到同时服务多个客户端,有三种技术 1. 进程并行,只能开到当前cpu个数的进程,但能用来处理计算型任务 ,开销最大 2. 如果并行不必要,那么可以考虑用线程并发,单位开销比进程小很多 线程:并发(轮询调度,遇到阻塞就切换) 只要是网络,就会有延迟,有延迟就阻塞,所以比一般的单路要好些 3. 阅读全文
posted @ 2018-11-25 18:02 山…隹 阅读(180) 评论(0) 推荐(0)
摘要: 1. 导gevent中的猴子补丁,来把原来python自带的socket变成基于epoll的socket(解除阻塞问题) 代码: 阅读全文
posted @ 2018-11-25 15:57 山…隹 阅读(684) 评论(0) 推荐(0)
摘要: 代码: from greenlet import greenlet import random def pro(): 生产者 while True: item = random.randint(0,99) print("生产了:",item) c.switch(item) 向消费者发送item ,并 阅读全文
posted @ 2018-11-25 14:29 山…隹 阅读(210) 评论(0) 推荐(0)
摘要: 思路: yield可以使得函数阻塞,next,和send可以解阻塞,实现数据不竞争的生产者消费者模式 代码: import random #随机数,模拟生产者的制造物 def eat(): #消费者 while True: item = (yield) print("消费了:",item) def 阅读全文
posted @ 2018-11-25 11:24 山…隹 阅读(400) 评论(0) 推荐(0)