安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

Python中级精华创建线程池

11月19日 龙凤殿投稿
  目的:
  我们想去创建一个工作者线程池来处理客户端的连接,让每个线程去处理各自的客户,或者完成其他类型的工作。
  方法:
  在concurrent。futures库中包含了ThreadPoolExecutor类可以实现这个目的。下面的例子是一个简单TCP服务器,使用线程池来处理客户端:fromsocketimportAFINET,SOCKSTREAM,socketfromconcurrent。futuresimportThreadPoolExecutordefechoclient(sock,clientaddr):print(Gotconnectionfrom:,clientaddr)whileTrue:msgsock。recv(65536)ifnotmsg:breaksock。sendall(msg)print(sock,hasbeensentallmessage。。。)sock。close()defechoserver(addr):poolThreadPoolExecutor(128)socksocket(AFINET,SOCKSTREAM)sock。bind(addr)sock。listen()whileTrue:clientsock,clientaddrsock。accept()服务器接收客户端请求pool。submit(echoclient,clientsock,clientaddr)提交给线程池中的处理函数去处理客户端echoserver((localhost,21000))服务器启动
  同样,可以抛开concurrent。futures中的ThreadPoolExecutor,直接手动创建线程池,如果借助Queue则会变得容易:fromsocketimportSOCKSTREAM,AFINET,socketfromthreadingimportThreadfromqueueimportQueuedefechoclient(q):sock,clientaddrq。get()print(gotconnection:,clientaddr)whileTrue:msgsock。recv(65536)ifnotmsg:breaksock。sendall(msg)print(clientclose)sock。close()defechoserver(addr,clientcount):qQueue()forxinrange(clientcount):tThread(targetechoclient,args(q,),daemonTrue)t。start()socksocket(SOCKSTREAM,AFINET)sock。bind(addr)sock。listen(5)whileTrue:sock,clientaddrsock。accept()q。put(sock,clientaddr)
  当然又有一句很蹩脚的话,不建议各位这样使用!!应该去使用concurrent。futures中的ThreadPoolExecutor,这么做的优势在于提交任务者可以很好地拿到处理后的结果:fromconcurrent。futuresimportThreadPoolExecutorimporturllib。requestdefrequesturl(url):uurllib。request。urlopen(url)datau。read()returndatapoolThreadPoolExecutor(10)apool。submit(requesturl,rhttp:www。xxxxxx。com)bpool。submit(requesturl,rhttp:www。xxxxxx。org)res1a。result()会阻塞等待上述中a取出结果后再解除阻塞res2b。result()
  讨论一个大家都很容易想到的问题,有些人认为,应该在服务器接收到一个客户端连接时就去开辟一个线程来处理这个客户端的事务,本质上来讲这样确实没有问题,但是,万一一个黑客用大量的客户端去访问服务时,有可能会因为开辟太多线程导致服务器挂掉,这是初学者都会想到的思路,但是,一旦涉及多并发程序,切记一定要限制线程个数,为了系统稳定和安全。下面为各位展示初学者的代码:fromthreadingimportThreadfromsocketimportsocket,AFINET,SOCKSTREAMdefechoclient(sock,clientaddr):print(GOTaconnection:,clientaddr)whileTrue:msgsock。recv(65536)ifnotmsg:breaksock。sendall(msg)sock。close()defechoserver(addr:tuple):socksocket(AFINET,SOCKSTREAM)sock。bind(addr)sock。listen(5)whileTrue:clientsock,clientaddrsock。accept()tThread(targetechoclient,args(clientsock,clientaddr))t。daemonTruet。start()echoserver((localhost,21000))
  这里也要注意,线程只适合做IO密集型的任务。综上关于线程池的内容就介绍到这里
投诉 评论 转载

国外游戏都做到哪种逼真程度了呢?游戏所谓的逼真程度,可以从多方面进行理解,可以是画质,可以是玩法、甚至某些不可描述的玩法,让玩家感到惊艳,原来游戏可以做到这种地步,对于我来说更为倾向于逼真的画质。巫师三……为什么越来越多的人讨厌微博?我也是这样出于好奇,去年注册了微博。刚开始觉得很有意思,刷一刷微博,可以放松一下自己。但随着对微博的近一步了解,再比对全网,真的发现微博的引战是最严重的。我常浏览机……聊聊iQOO8Pro,聊聊屏幕指纹的自我救赎前言8月17日,iQOO发布了年度旗舰iQOO8Pro,iQOO8pro有一个卖点是搭载了超声区域屏下指纹,简单来说,超声波区域指纹,可以在一块更大的区域内实现任意位置解……5499元起?iPhone13售价疑曝光,相机功能或将跟上国随着iPhone13系列发布时间的接近,关于这款手机的爆料信息也越来越多,上热搜的频率也是越来越高,其中在大家最关心的价格问题上,iPhone13系列价格或与12保持一致也登上……贵州电子科技职业学院参加第七届中国国际互联网大学生创新创业大日前,第七届中国国际互联网大学生创新创业大赛收官,贵州电子科技职业学院参赛的毒来毒往项目获职教赛道的创意组银奖。据介绍,毒来毒往项目是该校电子信息工程系专业教师带领学生,……听懂这些刹车异响你也是修车专家刹车异响的情况,相信不少车主上路都会偶发性遇到过。因此,学习分辨刹车响声,避免浪费时间和精力,对于一名合格的新手司机来说是非常必要的。1。新车刹车嘶嘶声新车处于磨合……Python中级精华创建线程池目的:我们想去创建一个工作者线程池来处理客户端的连接,让每个线程去处理各自的客户,或者完成其他类型的工作。方法:在concurrent。futures库中包含……腾讯系企业入股牛肉面品牌马记永玩出新花样的中华面食成热门赛道每经记者:王帆每经编辑:陈俊杰2月7日,《每日经济新闻》记者查询启信宝发现,1月27日,兰州牛肉面品牌马记永主体运营公司上海花桥餐饮管理有限公司发生工商变更,股东新增广西……美国有多少军工企业,制造能力有多强?我是萨沙,我来回答。媒体评选的世界十大军工企业,美国企业占到六个:洛克希德马丁公司,波音公司,雷神公司,格鲁曼公司,通用动力,内华达山脉防御系统公司一般认为,如果是……外卖封签新规4月1日起实施给外卖上锁把住最后一关原标题:外卖封签新规4月1日起实施给外卖上锁把住最后一关黄品超摄作为北京市地方标准的《网络餐饮服务餐饮安全管理规范》从今日(4月1日)起开始实施。外卖打包要使用开启……阿里巴巴的投资逻辑,这样讲卖菜大爷都懂前段时间单位体检,去的那天,人很多,发现很多阿里巴巴的员工也在那体检。阿里巴巴也在爱康国宾体检?在好奇心的驱使下,网上一查,爱康国宾原来是阿里巴巴控股的,难怪!阿里巴巴怎……和美图软件说拜拜!小米Civi的自拍实力能否抗衡OPPO和v文小伊评科技我曾经在小米CIVI发布之前点评过小米Civi,当时我的结论是如果它的定价在2000元左右那么将会是一款非常值得买,同价位无出其右的女性手机;如果它的定价在2……
如何看待iPhoneSE3在中国销量惨淡,在日本市场卖爆的现以黑人牙膏为例,浅析品牌焕新背后不是对传统的一刀切黄淮学院申报项目入选国家5G智慧教育应用试点联想一年利润38亿,杨元庆年薪1。7亿多不多?万智牌NFT?第三方NFT计划面临着威世智的起诉长津湖要冲影史票房第一?阿里影业入场,起底阿里文娱投资大版图海军舰船上是否可以装无人机?手机缺芯料持续两三年行业迎来四大新常态时报大视野医生忠告这3个好习惯,其实都是老年痴呆的元凶可升级鸿蒙的荣耀手机汇总共有30款,华为没让荣耀老用户失望华为太子李一男,27岁当上副总裁身价10亿,45岁陷750万3万人排队退款!乐视助攻,这家网约车平台深陷泥潭

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利