ホームページ >バックエンド開発 >Python チュートリアル >Python マルチスレッドがパラメーターを使用して複数のインターフェイスを要求する問題を解決する方法

Python マルチスレッドがパラメーターを使用して複数のインターフェイスを要求する問題を解決する方法

WBOY
WBOY転載
2023-04-24 15:10:151664ブラウズ

パラメータを持つ複数のインターフェイスを要求する複数のスレッド

プロセス/スレッド/Ctrip/非同期コンテンツについては、準備して書く時間があります。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))

この時点で、システムは別のサブスレッドを作成して実行し、Brush Gifts( ).giftt メソッド

メイン スレッドは t1.start() と t2.start() を実行しますが、それらを待ちません。実行が終了すると、メイン スレッドは継続するため、t1.start( ) と t2.start() が同時に要求されます。メイン スレッドは、両方のサブプロセス t1.start() と t2.start() が終了するまで終了しません。~

メイン スレッドが実行されるためt1.start() と t2.start() を 1 行ずつ実行すると、Python は正確な意味での同時実行性を実現できないため、この方法はデータ速度の要件が非常に高い場合には適していません。インターフェイスを要求します

関数: データを繰り返し挿入するために使用されます

1. まず Python をダウンロードし、次に cmd に Python を入力して、グローバル インストールが成功したかどうかを確認します

2. ダウンロードPcIdea

3. 必要なライブラリをダウンロードします

Python マルチスレッドがパラメーターを使用して複数のインターフェイスを要求する問題を解決する方法4. リクエスト ネットワークを確認します

    F12# を押します
  • インターフェイスにリクエストを送信します
  • ## まず、必要なヘッダー リクエスト ヘッダー データを確認します

##View text request

Python マルチスレッドがパラメーターを使用して複数のインターフェイスを要求する問題を解決する方法

    5. テンプレートを提供して、ゆっくりと体験してください
  •  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)

    忘れずにトークンを渡してください検証してデータを JSON に変換します。

以上がPython マルチスレッドがパラメーターを使用して複数のインターフェイスを要求する問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。