> 백엔드 개발 > 파이썬 튜토리얼 > 매개변수를 사용하여 여러 인터페이스를 요청하는 Python 다중 스레드 문제를 해결하는 방법

매개변수를 사용하여 여러 인터페이스를 요청하는 Python 다중 스레드 문제를 해결하는 방법

WBOY
풀어 주다: 2023-04-24 15:10:15
앞으로
1670명이 탐색했습니다.

다중 스레드는 매개변수를 사용하여 다중 인터페이스를 요청합니다.

프로세스/스레드/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()
로그인 후 복사

메인 스레드:

메인 스레드는 t2.start() 코드의 마지막 줄 실행을 마치면 py 파일을 처음부터 실행하는 것입니다. 그 후 메인 스레드는 대기 상태에 들어가고 하위 스레드를 기다린 후 종료됩니다.

서브 스레드:

서브 스레드의 개념은 메인 스레드를 실행하는 동안 여기에서 실행했다는 것입니다. 물론 t1.start() 메서드를 통해서입니다. call

t1 = threading.Thread(target=BrushGifts().giftt, args=(i, j, 51620))
로그인 후 복사

이제 시스템은 BrushGifts().giftt 메서드를 실행하고 호출하기 위해 하위 스레드를 엽니다

메인 스레드는 진행되는 동안 t1.start() 및 t2.start를 실행합니다. () 그러나 그는 실행이 끝날 때까지 기다리지 않을 것이므로 t1.start()와 t2.start()가 동시에 요청됩니다. ) 두 하위 프로세스 모두 종료되면 메인 스레드가 종료됩니다~

메인 스레드는 t1.start() 및 t2.start()를 한 줄씩 실행하고 Python은 정확한 의미에서 동시성을 달성할 수 없기 때문에 데이터 속도가 매우 높음 때로는 이 방법이 적용되지 않습니다

파이썬을 사용하여 인터페이스를 요청하는 방법

기능: 데이터를 반복적으로 삽입하는 데 사용됩니다

1 먼저 Python을 다운로드한 다음 cmd에 python을 입력하여 전역 설치가 성공했는지 확인합니다

2. PcIdea 다운로드

3. 다운로드 필요한 라이브러리 찾기

매개변수를 사용하여 여러 인터페이스를 요청하는 Python 다중 스레드 문제를 해결하는 방법

4. 요청 네트워크를 확인하세요

  • F12

  • 를 눌러 인터페이스를 요청하세요

  • 헤더 데이터

매개변수를 사용하여 여러 인터페이스를 요청하는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿