最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python多線程請求帶參數(shù)的多個接口問題

 更新時間:2023年03月14日 14:01:23   作者:不能知道我是誰  
這篇文章主要介紹了python多線程請求帶參數(shù)的多個接口問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

多線程請求帶參數(shù)的多個接口

對于進程/線程/攜程/異步的內(nèi)容 有時間準(zhǔn)備寫寫了 真的一直用for去循環(huán)慢到懷疑人生 需要運用的場景也會很多 所以分開一點點總結(jié)一下

先上代碼看一下內(nèi)容,多線程請求接口

imoprt threading # 首先運用到threading模塊


class BrushGifts:
?? ?# 以下是兩個相同的接口 send_gift_room_one()是送禮的接口
?? ?# 也就是說我想完成的狀態(tài)是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):
? ? ?? ?# 與上面的接口相同 不多做敘述
? ? ?? ?# 沒什么區(qū)別 就是寫著好理解倆接口的概念
? ? ? ? VoiceRoom().send_gift_room_one(recvUid, uid, giftId)


if __name__ == '__main__':
?? ?# 因為我的賬號是儲存在yaml文件內(nèi) 所以需要先倒出需要用戶的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內(nèi)需要傳入方法名 不要帶()因為帶括號就等于去調(diào)用了該方法 會直接開始執(zhí)行
? ? ?? ?# args內(nèi)傳入輸入帶入的參數(shù) 可以按順序來 也可以整理成元組或字典接收
? ? ? ? t1 = threading.Thread(target=BrushGifts().giftt, args=(i, j, 51620))
? ? ? ? # 兩個threading.Thread就是我請求并發(fā)兩個接口
? ? ? ? t2 = threading.Thread(target=BrushGifts().giftt, args=(j, i, 51620))
? ? ? ? # t1.start()為執(zhí)行
? ? ? ? t1.start()
? ? ? ? t2.start()

主線程:

主線程的概念就是這個py文件內(nèi)從頭到位的執(zhí)行 當(dāng)我執(zhí)行完最后一行代碼t2.start()后 主線程會進入等待狀態(tài),等待子線程結(jié)束后主線程才會結(jié)束

子線程:

子線程的概念就是在主線程執(zhí)行的過程中我執(zhí)行到了這里 當(dāng)然這里是通過t1.start()方法來進行調(diào)用的

t1 = threading.Thread(target=BrushGifts().giftt, args=(i, j, 51620))

這時候系統(tǒng)會再開辟出一條子線程進行BrushGifts().giftt方法的執(zhí)行與調(diào)用

主線程在進行的時候會執(zhí)行t1.start()與t2.start()但是他不會等待他們執(zhí)行結(jié)束,主線程會繼續(xù)往下,所以t1.start()與t2.start()是同時請求,當(dāng)t1.start()與t2.start()兩個子進程都結(jié)束時,主線程才會結(jié)束~

因為主線程執(zhí)行t1.start()與t2.start()是一行一行的執(zhí)行 而且python無法做到準(zhǔn)確意義上的并發(fā) 所以如果對數(shù)據(jù)速度要求很高的時候 此方法不適用

如何用python請求接口

作用:用來重復(fù)插入數(shù)據(jù)

1、首先下載好python 然后 cmd 輸入 python 判斷是否全局安裝成功

2、下載好PcIdea 

3、下載好自己需要的庫

4、查看請求網(wǎng)絡(luò)

  •  按好F12
  •  對接口進行請求
  •  先將需要的header請求頭標(biāo)數(shù)據(jù)進行驗證

  • 查看正文請求

5、給你一個模板自己慢慢體會 

 
import requests                         #導(dǎo)入requests包
import random
import json
import time
 
# response = requests.get('http://www.baidu.com')
# print(response.status_code)  # 打印狀態(tài)碼
# print(response.url)          # 打印請求url
# print(response.headers)      # 打印頭信息
# print(response.cookies)      # 打印cookie信息
# print(response.text)  #以文本形式打印網(wǎng)頁源碼
# print(response.content) #以字節(jié)流形式打印
# print(response.json())
 
 
AddCarURL = "http://localhost:10086/jeecg-boot/cable/insurance/add"
AddCarCookies = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MjkwOTUyNzcsInVzZXJuYW1lIjoiYWRtaW4ifQ.Kn1jB5gUkCdnszSVxnjVVKtRMbx_WJSVZW6G-yJaid8"
randomStr = "ABCDEFGHIJKLMNOPQRST"
randomInsurance = ["泰康人壽","陽光保險","新華保險","太平人壽","同方全球人壽","友邦保險"," 招商仁和","平安保險"]
randomBox = ["石鮮倉儲","明順倉儲","雄星倉儲","金盛倉儲","旺恒倉儲","中豹倉儲","飛翔倉儲","速發(fā)倉儲","春天倉儲"]
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)              #設(shè)置開始日期時間元組(1976-01-01 00:00:00)
a2=(2019,3,16,23,59,59,0,0,0)    #設(shè)置結(jié)束日期時間元組(1990-12-31 23:59:59)
 
a3=(2019,3,16,0,0,0,0,0,0)              #設(shè)置開始日期時間元組(1976-01-01 00:00:00)
a4=(2021,8,16,23,59,59,0,0,0)    #設(shè)置結(jié)束日期時間元組(1990-12-31 23:59:59)
 
start=time.mktime(a1)    #生成開始時間戳
end=time.mktime(a2)      #生成結(jié)束時間戳
 
start1=time.mktime(a3)    #生成開始時間戳
end2=time.mktime(a4)      #生成結(jié)束時間戳
 
# for i in range(10):
#     t=random.randint(start,end)    #在開始和結(jié)束時間戳中隨機取出一個
#     date_touple=time.localtime(t)          #將時間戳生成時間元組
#     date=time.strftime("%Y-%m-%d",date_touple)  #將時間元組轉(zhuǎn)成格式化字符串(1976-05-21)
#
#     t1 = random.randint(start1,end2)
#     date_touplen=time.localtime(t1)          #將時間戳生成時間元組
#     dateOne=time.strftime("%Y-%m-%d",date_touplen)  #將時間元組轉(zhuǎn)成格式化字符串(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)  # 在開始和結(jié)束時間戳中隨機取出一個
        date_touple = time.localtime(t)  # 將時間戳生成時間元組
        date = time.strftime("%Y-%m-%d", date_touple)  # 將時間元組轉(zhuǎn)成格式化字符串(1976-05-21)
 
        t1 = random.randint(start1, end2)
        date_touplen = time.localtime(t1)  # 將時間戳生成時間元組
        dateOne = time.strftime("%Y-%m-%d", date_touplen)  # 將時間元組轉(zhuǎn)成格式化字符串(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 驗證,還有根據(jù)數(shù)據(jù)轉(zhuǎn)json 即可

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python繪制散點圖詳細步驟(從0到1必會)

    python繪制散點圖詳細步驟(從0到1必會)

    這篇文章主要介紹了如何使用Python繪制散點圖,包括導(dǎo)入包、準(zhǔn)備數(shù)據(jù)、繪制圖像、修飾圖像(添加標(biāo)題、坐標(biāo)軸標(biāo)簽、顏色圖例)以及整合所有代碼,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-12-12
  • python之列表推導(dǎo)式的用法

    python之列表推導(dǎo)式的用法

    這篇文章主要介紹了python之列表推導(dǎo)式的用法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 盤點提高 Python 代碼效率的方法

    盤點提高 Python 代碼效率的方法

    本人用 Python 快兩年了,平時只是用它來寫點小小的分析腳本,以方便快捷為主,也沒怎么考慮代碼效率問題。最近想給自己升升級,提高一下代碼的檔次。于是找了一堆效率相關(guān)的文章,做了些實驗,總結(jié)一下。
    2014-07-07
  • python實現(xiàn)多線程及線程間通信的簡單方法

    python實現(xiàn)多線程及線程間通信的簡單方法

    這篇文章主要為大家介紹了python實現(xiàn)多線程及線程間通信的簡單方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 解決Python字典查找報Keyerror的問題

    解決Python字典查找報Keyerror的問題

    這篇文章主要介紹了解決Python字典查找報Keyerror的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • python 基于selectors庫實現(xiàn)文件上傳與下載

    python 基于selectors庫實現(xiàn)文件上傳與下載

    這篇文章主要介紹了python 基于selectors庫實現(xiàn)文件上傳與下載的示例代碼,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • python二分法查找實例代碼

    python二分法查找實例代碼

    二分算法是一種效率比較高的查找算法,其輸入的是一個有序的元素列表,如果查找元素包含在列表中,二分查找返回其位置,否則返回NONE,下面這篇文章主要給大家介紹了關(guān)于python二分法查找的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • Python超有用的多版本管理工具pyenv

    Python超有用的多版本管理工具pyenv

    使用不同的Python版本,如果我們把需要的不同版本的Python都下載到服務(wù)器上,管理起來會非常困難,多版本并存又容易互相干擾,接下來就來介紹一個Python環(huán)境管理工具:pyenv,就可輕松的在多個版本的Python之間自由切換,需要的朋友可以參考下
    2021-09-09
  • Python3使用turtle繪制超立方體圖形示例

    Python3使用turtle繪制超立方體圖形示例

    這篇文章主要介紹了Python3使用turtle繪制超立方體圖形,結(jié)合實例形式分析了Python使用海龜繪圖模塊turtle進行復(fù)雜圖形繪制的相關(guān)原理與操作技巧,需要的朋友可以參考下
    2018-06-06
  • pytorch中model.train()和model.eval()用法及說明

    pytorch中model.train()和model.eval()用法及說明

    在PyTorch中,model.train()用于啟用BatchNormalization和Dropout,保證模型在訓(xùn)練階段能夠有效地利用這些層的特性,而model.eval()則是用于測試階段,確保BatchNormalization和Dropout不會影響測試結(jié)果,保持模型的穩(wěn)定性
    2024-09-09

最新評論

三河市| 辉南县| 淄博市| 绥宁县| 静海县| 北流市| 连山| 海林市| 从江县| 广德县| 石渠县| 礼泉县| 陇西县| 密山市| 宣汉县| 梅河口市| 连南| 玉田县| 凭祥市| 马关县| 晋宁县| 全州县| 福鼎市| 平舆县| 宜宾市| 简阳市| 长兴县| 宿州市| 额尔古纳市| 乡宁县| 巴林右旗| 莲花县| 长治县| 武威市| 都兰县| 新沂市| 南平市| 科尔| 文山县| 昌平区| 莱阳市|