时间:2023-03-15来源:系统城装机大师作者:佚名
对于进程/线程/携程/异步的内容 有时间准备写写了 真的一直用for去循环慢到怀疑人生 需要运用的场景也会很多 所以分开一点点总结一下
先上代码看一下内容,多线程请求接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
imoprt threading # 首先运用到threading模块 class BrushGifts: # 以下是两个相同的接口 send_gift_room_one()是送礼的接口 # 也就是说我想完成的状态是A送B B送A 两个用户同时想对方赠送礼物 def giftt( self , uid, recvUid, giftId): """ 送礼接口 :param uid: 送礼用户 :param recvUid: 收礼用户 :param giftId: 礼物道具id :return: """ VoiceRoom().send_gift_room_one(uid, recvUid, giftId) def giftt_a( self , uid, recvUid, giftId): # 与上面的接口相同 不多做叙述 # 没什么区别 就是写着好理解俩接口的概念 VoiceRoom().send_gift_room_one(recvUid, uid, giftId) if __name__ = = '__main__' : # 因为我的账号是储存在yaml文件内 所以需要先倒出需要用户的uid列表 # 送礼人与收礼人分别倒出 uid_list = YamlHandler(YamlThePath().voice_room_cpNew).get_uid_list( 10 ) rUid_list = YamlHandler(YamlThePath().number_old).get_scope_uid( 1500 , 10 ) # 这里暂时先展示最简单的AB同时互送~ for (i, j) in zip (uid_list, rUid_list): # target内需要传入方法名 不要带()因为带括号就等于去调用了该方法 会直接开始执行 # args内传入输入带入的参数 可以按顺序来 也可以整理成元组或字典接收 t1 = threading.Thread(target = BrushGifts().giftt, args = (i, j, 51620 )) # 两个threading.Thread就是我请求并发两个接口 t2 = threading.Thread(target = BrushGifts().giftt, args = (j, i, 51620 )) # t1.start()为执行 t1.start() t2.start() |
主线程:
主线程的概念就是这个py文件内从头到位的执行 当我执行完最后一行代码t2.start()后 主线程会进入等待状态,等待子线程结束后主线程才会结束
子线程:
子线程的概念就是在主线程执行的过程中我执行到了这里 当然这里是通过t1.start()方法来进行调用的
1 | t1 = threading.Thread(target = BrushGifts().giftt, args = (i, j, 51620 )) |
这时候系统会再开辟出一条子线程进行BrushGifts().giftt方法的执行与调用
主线程在进行的时候会执行t1.start()与t2.start()但是他不会等待他们执行结束,主线程会继续往下,所以t1.start()与t2.start()是同时请求,当t1.start()与t2.start()两个子进程都结束时,主线程才会结束~
因为主线程执行t1.start()与t2.start()是一行一行的执行 而且python无法做到准确意义上的并发 所以如果对数据速度要求很高的时候 此方法不适用
作用:用来重复插入数据
1、首先下载好python 然后 cmd 输入 python 判断是否全局安装成功
2、下载好PcIdea
3、下载好自己需要的库
4、查看请求网络
5、给你一个模板自己慢慢体会
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
import requests #导入requests包 import random import json import time # response = requests.get('http://www.baidu.com') # print(response.status_code) # 打印状态码 # print(response.url) # 打印请求url # print(response.headers) # 打印头信息 # print(response.cookies) # 打印cookie信息 # print(response.text) #以文本形式打印网页源码 # print(response.content) #以字节流形式打印 # print(response.json()) AddCarURL = "http://localhost:10086/jeecg-boot/cable/insurance/add" AddCarCookies = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MjkwOTUyNzcsInVzZXJuYW1lIjoiYWRtaW4ifQ.Kn1jB5gUkCdnszSVxnjVVKtRMbx_WJSVZW6G-yJaid8" randomStr = "ABCDEFGHIJKLMNOPQRST" randomInsurance = [ "泰康人寿" , "阳光保险" , "新华保险" , "太平人寿" , "同方全球人寿" , "友邦保险" , " 招商仁和" , "平安保险" ] randomBox = [ "石鲜仓储" , "明顺仓储" , "雄星仓储" , "金盛仓储" , "旺恒仓储" , "中豹仓储" , "飞翔仓储" , "速发仓储" , "春天仓储" ] sess = requests.session() headers = { "X-Access-Token" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MjkxMDUyMjUsInVzZXJuYW1lIjoiYWRtaW4ifQ.EUAjJYACel8QHFw4AFERIaDjXZJTwOOyp8uncqx3Jps" , "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19041" , "Referer" : "http://localhost:3000/cable/VehicleList" , "Origin" : "http://localhost:3000" , "Host" : "localhost:10086" , "Content-Type" : "application/json; charset=utf-8" } a1 = ( 2017 , 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ) #设置开始日期时间元组(1976-01-01 00:00:00) a2 = ( 2019 , 3 , 16 , 23 , 59 , 59 , 0 , 0 , 0 ) #设置结束日期时间元组(1990-12-31 23:59:59) a3 = ( 2019 , 3 , 16 , 0 , 0 , 0 , 0 , 0 , 0 ) #设置开始日期时间元组(1976-01-01 00:00:00) a4 = ( 2021 , 8 , 16 , 23 , 59 , 59 , 0 , 0 , 0 ) #设置结束日期时间元组(1990-12-31 23:59:59) start = time.mktime(a1) #生成开始时间戳 end = time.mktime(a2) #生成结束时间戳 start1 = time.mktime(a3) #生成开始时间戳 end2 = time.mktime(a4) #生成结束时间戳 # for i in range(10): # t=random.randint(start,end) #在开始和结束时间戳中随机取出一个 # date_touple=time.localtime(t) #将时间戳生成时间元组 # date=time.strftime("%Y-%m-%d",date_touple) #将时间元组转成格式化字符串(1976-05-21) # # t1 = random.randint(start1,end2) # date_touplen=time.localtime(t1) #将时间戳生成时间元组 # dateOne=time.strftime("%Y-%m-%d",date_touplen) #将时间元组转成格式化字符串(1976-05-21) # print(date + " " +dateOne) def addCar(num: int ): # {"type": "2", "carryingCapacity": "3吨", "license": "粤A888", "engineNumber": "123456", "state": 0} # {"vehicleId": "2", "insuraName": "人寿保险", "insurancePolicy": "UY1254SD5492W", "insuranceDateBegin": "2021-08-16", # "insuranceDateEnd": "2021-08-31", "strongPolicy": "UY1254SD5492E", "strongDateBegin": "2021-07-01", # "strongDateEnd": "2021-08-28", "license": "2"} for i in range (num): t = random.randint(start, end) # 在开始和结束时间戳中随机取出一个 date_touple = time.localtime(t) # 将时间戳生成时间元组 date = time.strftime( "%Y-%m-%d" , date_touple) # 将时间元组转成格式化字符串(1976-05-21) t1 = random.randint(start1, end2) date_touplen = time.localtime(t1) # 将时间戳生成时间元组 dateOne = time.strftime( "%Y-%m-%d" , date_touplen) # 将时间元组转成格式化字符串(1976-05-21) datas = {} datas[ "vehicleId" ] = "2" datas[ "insuraName" ] = random.choice(randomInsurance) datas[ "insurancePolicy" ] = random.choice(randomStr) + str (random.randint( 10000 , 99999 )) + random.choice(randomStr) + str (random.randint( 10000 , 99999 )); datas[ "insuranceDateBegin" ] = date datas[ "insuranceDateEnd" ] = dateOne datas[ "strongPolicy" ] = random.choice(randomStr) + str (random.randint( 10000 , 99999 )) + random.choice(randomStr) + str (random.randint( 10000 , 99999 )); datas[ "strongDateBegin" ] = date datas[ "strongDateEnd" ] = dateOne datas[ "license" ] = i print (datas) res = requests.post(url = AddCarURL, data = json.dumps(datas), headers = headers) print (res.text) addCar( 100 ) |
记得要通过 token 验证,还有根据数据转json 即可
2023-03-17
python flask项目打包成docker镜像发布的过程2023-03-17
python调试模块ipdb详解2023-03-17
python使用openai生成图像的超详细教程python cron定时任务触发接口自动化巡检 apscheduler报错:Run time of job …… next run at: ……)” was missed by misfire_grace_time参数 找到任务超时的根本原因...
2023-03-15