求助: asyncore.loop 的预期不符!求帮忙分析一下,谢谢!
参照官网的例子,写了一个 asyncore.dispatcher 的子类,用于获取信息。 众所周知,现在大多数地方,网站都有链接数量限制。 由于总数量约在 8w 条,考虑限制链接数。 主要功能代码如下:
本意为当 socket_map 数量高于一定数量,就等到完成一些再继续增加连接。
其中 WhoisClient 是仿照官网 HttpClient 改写无问题。
按照帮助文档中 asyncore.loop()的参数说明,当 count 为默认 None 时,阻塞至所有 WhoisClient 实例完成。count=具体数值时,阻塞至完成 count 个实例。 可是我的代码运行状况却并如预期(保持 5 个连接,做好 1 个继续添加连接)。
本以为 loop 不阻塞,取消 count=1,结果每 5 个连接完成,继续下 5 个。
不知道哪位能帮我分析分析这个 loop 咋才能达到我的预期啊?
if __name__ == "__main__":
q_in = queue.Queue()
q_out = queue.Queue()
conn_count = 5
with open("ipLib_20.txt", "rb") as frd:
for line_b in frd:
q_in.put(line_b)
cc = WhoisClient(q_in, q_out)
if len(asyncore.socket_map) >= conn_count:
print(f"first len={len(asyncore.socket_map)},q_in = {q_in.qsize()} , q_out = {q_out.qsize()}")
asyncore.loop(count=1)
print(f"end len={len(asyncore.socket_map)},q_in = {q_in.qsize()} , q_out = {q_out.qsize()}")
asyncore.loop()
本意为当 socket_map 数量高于一定数量,就等到完成一些再继续增加连接。
其中 WhoisClient 是仿照官网 HttpClient 改写无问题。
按照帮助文档中 asyncore.loop()的参数说明,当 count 为默认 None 时,阻塞至所有 WhoisClient 实例完成。count=具体数值时,阻塞至完成 count 个实例。 可是我的代码运行状况却并如预期(保持 5 个连接,做好 1 个继续添加连接)。
本以为 loop 不阻塞,取消 count=1,结果每 5 个连接完成,继续下 5 个。
不知道哪位能帮我分析分析这个 loop 咋才能达到我的预期啊?
...全文
相关推荐
asyncore.py
asyncore.py
帝国CMS灵动标签e:loop的使用方法分享
帝国CMS灵动标签e:loop的使用方法,自定义循环标签
3dmax插件Loop加选
3dmax插件Loop加选
Bulk_Loop_Test.rar_bulk loop_usb bulk
Bulk_Loop_Test usb测试程序 非常好的交流资料 欢迎交流
swiper在vue项目中loop循环轮播失效的解决方法
长话短说,在vue(2.5.x)中使用swiper(4.3.3),轮播加了autoplay和loop、observer、observeParents等参数还是很诡异的无法循环轮播; 那么可以这样写代码试试: this.$api.queryImages().then((resp) => { if(resp && resp.data.resultCode == 0){ this.swiperImgs = resp.data.data; this.$nextTick(() => { // 下一个UI帧再初始化swiper this.initSwiper(); }); } }


