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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python多線程實(shí)現(xiàn)支付模擬請(qǐng)求過(guò)程解析

瀏覽:116日期:2022-07-29 13:28:20

思路:

隊(duì)列使用說(shuō)明:

 multiprocessing.Queue()#用于進(jìn)程間通信,單主進(jìn)程與子進(jìn)程無(wú)法通信(使用進(jìn)程池時(shí)盡量不要使用這個(gè))  multiprocessing.Manager().Queue()#用于主子進(jìn)程通信,通過(guò)進(jìn)程池(pool)創(chuàng)建的進(jìn)程可以數(shù)據(jù)共享  queue.Queue()#用于線程間通信,同一進(jìn)程內(nèi)的數(shù)據(jù)可以共享

1.從數(shù)據(jù)庫(kù)里獲取待支付的訂單

2.將獲取出來(lái)的數(shù)據(jù)添加至隊(duì)列(queue.Queue()),并在函數(shù)中返回消息隊(duì)列的長(zhǎng)度

3.根據(jù)隊(duì)列長(zhǎng)度創(chuàng)建對(duì)應(yīng)的線程數(shù)量

4.把創(chuàng)建的線程放在list

5.依次啟動(dòng)

6.最后等待主線程執(zhí)行完結(jié)束,統(tǒng)計(jì)函數(shù)運(yùn)行時(shí)長(zhǎng)

代碼如下

import asyncioimport sysfrom queue import Queuesys.path.append('../')from tool.__init__ import *from tool.decorator_token import *import timefrom threading import Thread,Lockclass doWeChatNotify(BaseTest): def __init__(self): super().__init__() self.limit_num=100 #查詢記錄條數(shù) self.WeChatNotify_sql=’’’select order_id,order_sn from fw_order where `status`=0 and course_id=1569 ORDER BY create_time desc limit %d ;’’’%(self.limit_num) self.fwh_test_api=fwh_test_api self.data = self.my_op.sql_operation_fwh(self.WeChatNotify_sql) self.fwh_order_dict = {} self.que = Queue() @token_fwh#驗(yàn)證token有效性 def get_fwh_token_list(self): token_list=self.fwh_token.loadTokenList() return token_list @token_crm#驗(yàn)證token有 def get_crm_token_list(self) token_list=self.token.loadTokenList() return token_list def testDoWeChatNotify(self): DoWeChatNotify_file=’../tokenFileAndtxtFiles’+’/’+'DoWeChatNotify_asynchronousPay.txt' with open(DoWeChatNotify_file,’a’,encoding=’utf=-8’) as file: str_first='order_idt'+'order_sntn' #文件首行數(shù)據(jù) file.write(str_first) fwh_order_id_list, fwh_order_sn_list = [], [] if self.data!=(): for a in self.data:fwh_order_id=a[’order_id’]fwh_order_sn=a[’order_sn’]self.fwh_order_dict[fwh_order_id]=fwh_order_snwith open(DoWeChatNotify_file,’a’,encoding=’utf-8’) as file2:#文件寫(xiě)入 str_DoWeChatNotifyInfo=str(fwh_order_id)+’t’+str(fwh_order_sn)+’tn’ file2.flush() #清除緩沖區(qū) file2.write(str_DoWeChatNotifyInfo)self.que.put(self.fwh_order_dict)#將數(shù)據(jù)添加至隊(duì)列 #關(guān)閉數(shù)據(jù)庫(kù)連接 # self.my_op.close_db_fwh() # self.my_op.close_db() return self.que.qsize()#返回隊(duì)列數(shù)量 def asynchronousPay(self,order_id,order_sn): count=1 count_num=50 token_list=self.get_fwh_token_list() if (self.data!=()): headers_form_urlencoded[’token’]=token_list[0] url_wechat_success_huidiao=self.fwh_test_api+’/index/Order/doWeChatNotify’ data_wechat_success_huidiao=self.data_to_str.requestDataToStr_firefoxAndChrome_fwh(’’’order_sn:{}order_id:{}meth_id:4timestamp:157129653969sign:0687b01b300b9e300d3996a9d2173f1380973e5a’’’.format(order_sn,order_id)) request_wechat_success_huidiao=requests.post(url=url_wechat_success_huidiao,headers=headers_form_urlencoded,data=data_wechat_success_huidiao) response_wechat_success_huidiao=request_wechat_success_huidiao.json() if ’訂單狀態(tài)錯(cuò)誤,非待支付訂單’ in response_wechat_success_huidiao[’msg’]:print(data_wechat_success_huidiao) else: print(’待支付訂單為空’) def run_multithreading(self):#多線程 threads = []#存放所有的線程 nloops = list(range(self.testDoWeChatNotify()))#獲取隊(duì)列數(shù)量 if len(nloops)>0: for i,k in zip(nloops,self.que.get().items()):#根據(jù)隊(duì)列數(shù)量來(lái)創(chuàng)建線程t = Thread(target=self.asynchronousPay,args=(k[0],k[1]))threads.append(t) for s in nloops: # 開(kāi)始多線程threads[s].start() for j in nloops: # 等待所有線程完成threads[j].join() else: print('隊(duì)列數(shù)量為空')if __name__=='__main__': start_time = time.time() # 計(jì)算程序開(kāi)始時(shí)間 wechfy=doWeChatNotify() wechfy.run_multithreading()#多線程 print(’程序耗時(shí){:.2f}’.format(time.time() - start_time)) # 計(jì)算程序總耗時(shí)

總結(jié):親測(cè)運(yùn)行時(shí)間還是會(huì)快很多,單線程支付100個(gè)訂單四十幾秒的樣子,多線程運(yùn)行不用join2.x秒,用join八秒的樣子,還有很大的優(yōu)化空間,因?yàn)檫\(yùn)行時(shí)會(huì)創(chuàng)建100個(gè)線程

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 商标转让-商标注册-商标查询-软著专利服务平台 - 赣江万网 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 烘箱-工业烘箱-工业电炉-实验室干燥箱 - 苏州华洁烘箱制造有限公司 | 应急灯_消防应急灯_应急照明灯_应急灯厂家-大成智慧官网 | 硅胶管挤出机厂家_硅胶挤出机生产线_硅胶条挤出机_臣泽智能装备 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 权威废金属|废塑料|废纸|废铜|废钢价格|再生资源回收行情报价中心-中废网 | 精益专家 - 设备管理软件|HSE管理系统|设备管理系统|EHS安全管理系统 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | FAG轴承,苏州FAG轴承,德国FAG轴承-恩梯必传动设备(苏州)有限公司 | 精密模具加工制造 - 富东懿 | 跨境物流_美国卡派_中大件运输_尾程派送_海外仓一件代发 - 广州环至美供应链平台 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 厂厂乐-汇聚海量采购信息的B2B微营销平台-厂厂乐官网 | 申江储气罐厂家,储气罐批发价格,储气罐规格-上海申江压力容器有限公司(厂) | 户外环保不锈钢垃圾桶_标识标牌制作_园林公园椅厂家_花箱定制-北京汇众环艺 | TYPE-C厂家|TYPE-C接口|TYPE-C防水母座|TYPE-C贴片-深圳步步精 | 船用锚链|专业锚链生产厂家|安徽亚太锚链制造有限公司 | 化工ERP软件_化工新材料ERP系统_化工新材料MES软件_MES系统-广东顺景软件科技有限公司 | 呼末二氧化碳|ETCO2模块采样管_气体干燥管_气体过滤器-湖南纳雄医疗器械有限公司 | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 | China plate rolling machine manufacturer,cone rolling machine-Saint Fighter | 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | 聚合氯化铝厂家-聚合氯化铝铁价格-河南洁康环保科技 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 木材烘干机,木炭烘干机,纸管/佛香烘干设备-河南蓝天机械制造有限公司 | 硅胶制品-硅橡胶制品-东莞硅胶制品厂家-广东帝博科技有限公司 | 上海橡胶接头_弹簧减震器_金属软接头厂家-上海淞江集团 | vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 德州万泰装饰 - 万泰装饰装修设计软装家居馆 | 冷柜风机-冰柜电机-罩极电机-外转子风机-EC直流电机厂家-杭州金久电器有限公司 | 农业四情_农业气象站_田间小型气象站_智慧农业气象站-山东风途物联网 | 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 | 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | 无线联网门锁|校园联网门锁|学校智能门锁|公租房智能门锁|保障房管理系统-KEENZY中科易安 | 比士亚-专业恒温恒湿酒窖,酒柜,雪茄柜的设计定制 | 诸城网站建设-网络推广-网站优化-阿里巴巴托管-诸城恒泰互联 | 广东教师资格网-广东教师资格证考试网 | Akribis直线电机_直线模组_力矩电机_直线电机平台|雅科贝思Akribis-杭州摩森机电科技有限公司 |