python中单线程非阻塞并发
我们在使用多线程并发处理IO操作时候,每个线程当发送一个请求之后,就得阻塞等待接受返回的数据,数据较少的时候,这样并发操作还行php单线程,但是当数据非常庞大的时候,等待时间就会非常漫长,那么我们可以使用单线程非阻塞,就是使用一个线程逐个发送每一个请求,不用等待数据的返回操作,然后全都发送完毕,在逐个的接受每一个请求返回的数据 其中会使用到select模块 select模块就是用于监听每一个请求对象的变化 其中有三个方法 select(rlist, wlist, xlist, timeout=None),其本质就是调用每一个socket对象中的fileno()函数进行监听 rlist 表示列表中的每一个对象都是服务端返回的数据变化的socket对象 wlist 列表中每一个对象表示与服务端连接成功之后的socket对象 xlist 列表表示出现错误的socket对象 timeout 表示隔多长时间检测一次, 注意 select使循环检测的,最多1024个socket对象poll方法,表示无限制socket对象,循环检测epoll 方法,表示无限制不循环检测 具体代码:
原文链接: 程序员说:42岁了,突然觉得研发前途渺茫 中国程序员数量达755万,全球排名第二 为什么都说程序员找不到女朋友,但是身边程序猿的却没一个单身的? 程序员说:30岁以上你还死磕技术,别说拿高薪,可能你连饭碗都会保不住 程序员被开除,老板:“有你参与的项目全黄了!” 笑话:一个测试工程师走进一家酒吧 笑话:面试官:请拿出一段体现你水平的代码。我: sudo rm -rf /*面试官:这体现了你哪方面能力? python精选:Python 办公实战!?按姓名拆分 Excel 为单独文件,微信自动发给相应联系人 网友说:做开发,不被领导喜欢怎么办? 网友说:我奉劝各位,一定不能在职场透露自己的家庭条件 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |