多线程请求带参数的多个接口对于进程/线程/携程/异步的内容 有时间准备写写了 真的一直用for去循环慢到怀疑人生 需要运用的场景也会很多 所以分开一点点总结一下
先上代码看一下内容,多线程请求接口
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()方法来进行调用的
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无法做到准确意义上的并发 所以如果对数据速度要求很高的时候 此方法不适用
如何用python请求接口作用:用来重复插入数据
1、首先下载好python 然后 cmd 输入 python 判断是否全局安装成功
2、下载好pcidea 
3、下载好自己需要的库
4、查看请求网络
 按好f12
 对接口进行请求
 先将需要的header请求头标数据进行验证
查看正文请求
5、给你一个模板自己慢慢体会 
 import requests                         #导入requests包import randomimport jsonimport 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 即可。
以上就是python多线程请求带参数的多个接口问题怎么解决的详细内容。
   
 
   