時間: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-15
python apscheduler cron定時任務觸發接口自動化巡檢過程2023-03-15
python之線程池map()方法傳遞多參數list2023-03-15
Python3使用tracemalloc實現追蹤mmap內存變化python如何清屏?你們知道Python怎么清屏嗎,接下來的內容中介紹的是使用這款軟件清除屏幕的方法,歡迎需要的朋友閱讀本文參考下。...
2023-03-11
pycharm如何創建Python關聯文件?PyCharm用于一般IDE具備的功能,比如, 調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制等,本文中介紹的是使用這款軟件創建python關聯文件的方法,歡迎需要...
2023-03-11