电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python 實現socket服務端并發的四種方式

瀏覽:3日期:2022-07-02 10:35:32
多進程&多線程

服務端:多進程和多線程的開啟方式相同。

缺點:<1> 由于Cpython的GIL,導致同一時間無法運行多個線程;<2> 不可能無限開進進程或線程

解決辦法:多進程、concurrent.futures.ProcessPoolExecutor、線程池

import socketfrom multiprocessing import Processfrom threading import Threadclass MyTcpServer: def __init__(self, ip, port): self.ip = ip self.port = port self.server = socket.socket() self.server.bind((self.ip, self.port)) self.server.listen(5) def wait_accept(self): conn, addr = self.server.accept() return conn, addr def handle_request(self, conn): while 1: try:data = conn.recv(1024)if not data: breakconn.send(data.upper()) except Exception as e:print(e)break conn.close()if __name__ == ’__main__’: server = MyTcpServer(’127.0.0.1’, 8888) while 1: conn, addr = server.wait_accept() p = Process(target=server.handle_request, args=(conn, ))# 創建一個進程 p.start()# 告訴操作提供,開啟這個進程進程池&線程池

異步提交任務,支持異步接收返回結果(submit返回一個futures對象,調用add_done_callback方法)

import socketfrom concurrent.futures import ProcessPoolExecutor# from concurrent.futures import ThreadPoolExecutorclass MyTcpServer: def __init__(self, ip, port): self.ip = ip self.port = port self.server = socket.socket() self.server.bind((self.ip, self.port)) self.server.listen(5) def wait_accept(self): conn, addr = self.server.accept() return conn, addr def handle_request(self, conn): while 1: try:data = conn.recv(1024)if not data: breakconn.send(data.upper()) except Exception as e:print(e)break conn.close()if __name__ == ’__main__’: server = MyTcpServer(’127.0.0.1’, 8888) pool = ProcessPoolExecutor(5) # 5個進程一直服務 while 1: conn, addr = server.wait_accept() pool.submit(server.handle_request, conn)# 異步提交任務socketserver

優點:簡化socket服務端創建流程。提供服務端串行和并發兩種服務模式(TCPServer,ThreadingTCPServer)缺點:windows上無法使用多進程實現并發

import socketserverclass MyTcpHandler(socketserver.BaseRequestHandler): def handle(self):# 通信循環 while 1: try:data = self.request.recv(1024)if not data: breakself.request.send(data.upper()) except Exception as e:print(e)break self.request.close()if __name__ == ’__main__’: ip_port = ’127.0.0.1’, 8888 server = socketserver.ThreadingTCPServer(ip_port, MyTcpHandler) # 異步處理 server.serve_forever()# 連接循環

協程

優點:單線程內實現并發,代碼級別模擬IO切換,提高程序運行效率

from gevent import spawn, monkey;monkey.patch_all()# 猴子補丁,補丁:常規IOimport socketclass MyTcpServer: def __init__(self, ip, port, my_spawn): self.ip = ip self.port = port self.server = socket.socket() self.server.bind((self.ip, self.port)) self.server.listen(5) self.spawn = my_spawn# 保存spawn本地 def wait_accept(self): while 1: conn, addr = self.server.accept() self.spawn(self.handle_request, conn)# 檢測 handle_request的io def handle_request(self, conn): while 1: try:data = conn.recv(1024)if not data: breakconn.send(data.upper()) except Exception as e:print(e)break conn.close()if __name__ == ’__main__’: server = MyTcpServer(’127.0.0.1’, 8888, spawn) g1 = server.spawn(server.wait_accept)# 檢測wait_accept的io g1.join()# 等待g1運行結束,即一直在循環檢測io

以上就是python 實現socket服務端并發的四種方式的詳細內容,更多關于python socket服務端并發的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 二手色谱仪器,十万分之一分析天平,蒸发光检测器,电位滴定仪-湖北捷岛科学仪器有限公司 | 东莞精密模具加工,精密连接器模具零件,自動機零件,冶工具加工-益久精密 | 安驭邦官网-双向万能直角铣头,加工中心侧铣头,角度头[厂家直销] 闸阀_截止阀_止回阀「生产厂家」-上海卡比阀门有限公司 | 武汉高低温试验机-现货恒温恒湿试验箱-高低温湿热交变箱价格-湖北高天试验设备 | 头条搜索极速版下载安装免费新版,头条搜索极速版邀请码怎么填写? - 欧远全 | 济南冷库安装-山东冷库设计|建造|冷库维修-山东齐雪制冷设备有限公司 | 塑胶跑道_学校塑胶跑道_塑胶球场_运动场材料厂家_中国塑胶跑道十大生产厂家_混合型塑胶跑道_透气型塑胶跑道-广东绿晨体育设施有限公司 | 电采暖锅炉_超低温空气源热泵_空气源热水器-鑫鲁禹电锅炉空气能热泵厂家 | 订做不锈钢_不锈钢定做加工厂_不锈钢非标定制-重庆侨峰金属加工厂 | 柔性测斜仪_滑动测斜仪-广州杰芯科技有限公司| 台式核磁共振仪,玻璃软化点测定仪,旋转高温粘度计,测温锥和测温块-上海麟文仪器 | 深圳侦探联系方式_深圳小三调查取证公司_深圳小三分离机构 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 电动液压篮球架_圆管地埋式篮球架_移动平箱篮球架-强森体育 | 超声波清洗机_大型超声波清洗机_工业超声波清洗设备-洁盟清洗设备 | 并网柜,汇流箱,电控设备,中高低压开关柜,电气电力成套设备,PLC控制设备订制厂家,江苏昌伟业新能源科技有限公司 | 火锅加盟_四川成都火锅店加盟_中国火锅连锁品牌十强_朝天门火锅【官网】 | 扬尘监测_扬尘监测系统_带证扬尘监测设备 - 郑州港迪科技有限公司 | 国产离子色谱仪,红外分光测油仪,自动烟尘烟气测试仪-青岛埃仑通用科技有限公司 | 湖南专升本-湖南省专升本报名-湖南统招专升本考试网 | 日本SMC气缸接头-速度控制阀-日本三菱伺服电机-苏州禾力自动化科技有限公司 | LED灯杆屏_LED广告机_户外LED广告机_智慧灯杆_智慧路灯-太龙智显科技(深圳)有限公司 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 体感VRAR全息沉浸式3D投影多媒体展厅展会游戏互动-万展互动 | 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 臭氧灭菌箱-油桶加热箱-原料桶加热融化烘箱-南京腾阳干燥设备厂 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | 东莞压铸厂_精密压铸_锌合金压铸_铝合金压铸_压铸件加工_东莞祥宇金属制品 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 道康宁消泡剂-瓦克-大川进口消泡剂供应商| 脑钠肽-白介素4|白介素8试剂盒-研域(上海)化学试剂有限公司 | 金属波纹补偿器厂家_不锈钢膨胀节价格_非金属伸缩节定制-庆达补偿器 | 优秀的临床医学知识库,临床知识库,医疗知识库,满足电子病历四级要求,免费试用 | HEYL硬度计量泵-荧光法在线溶解氧仪-净时测控技术(上海)有限公司 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 杰福伦_磁致伸缩位移传感器_线性位移传感器-意大利GEFRAN杰福伦-河南赉威液压科技有限公司 | 废水处理-废气处理-工业废水处理-工业废气处理工程-深圳丰绿环保废气处理公司 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 电机修理_二手电机专家-河北豫通机电设备有限公司(原石家庄冀华高压电机维修中心) |