首页 > 编程语言 >Python-多线程调用计算请求时间

Python-多线程调用计算请求时间

时间:2023-09-21 09:35:37浏览次数:40  
标签:execution 调用 Python content task time print 多线程 id

使用多线程调用某个方法(请求),计算每个线程消耗时间

import threading
import time
import requests
import json
import concurrent.futures


def input_req():
    url = "https://xxxxxxxxxxxx"
    approval_content = "nulla in"
    payload = json.dumps({
        "approval_content": approval_content,
        "ac_token": "123"
    })
    headers = {
        'Authorization': 'bear {{ACCESS_TOKEN}}',
        'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
        'Content-Type': 'application/json'
    }

    response = requests.request("POST", url, headers=headers, data=payload)
    if response.status_code == 200:
        content = json.loads(response.content)
        task_id = content.get("item").get('task_id')
    return task_id


def output_req(task_id):
    url = "https://xxxxxx"

    payload = json.dumps({
        "task_id": str(task_id),
        "ac_token": "123"
    })
    headers = {
        'Authorization': 'bear {{ACCESS_TOKEN}}',
        'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
        'Content-Type': 'application/json'
    }

    response = requests.request("POST", url, headers=headers, data=payload)
    if response.status_code == 200:
        item = json.loads(response.content).get('item')
        if item and isinstance(item, list):
            return True
    else:
        print(f"发送输出请求完毕,返回状态码:{response.status_code}")


def run():
    start_time = time.time()
    thread_id = threading.current_thread().ident
    print("线程", thread_id, "开始执行")
    tag = False
    task_id = input_req()
    print("线程", thread_id, "任务id", task_id)
    while not tag:
        tag = output_req(task_id)
        if not tag:
            time.sleep(1)

    end_time = time.time()
    execution_time = end_time - start_time
    print("线程", thread_id, "完成,执行时间:", execution_time, "秒")
    return execution_time


def test_time(n=1):
    for i in range(n):
        execution_times = []
        with concurrent.futures.ThreadPoolExecutor() as executor:
            futures = [executor.submit(run) for i in range(1, 11)]
            for future in concurrent.futures.as_completed(futures):
                execution_time = future.result()
                execution_times.append(execution_time)

        print(f"---轮数:{i + 1}---所有线程已完成-----")
        all_time = sum(execution_times)
        print(f"---轮数:{i + 1}---总耗时{all_time}-----")
        for i, execution_time in enumerate(execution_times):
            print("线程", i + 1, "消耗时间:", execution_time, "秒")


if __name__ == '__main__':
    test_time(2)

标签:execution,调用,Python,content,task,time,print,多线程,id
From: https://www.cnblogs.com/chiyun/p/17719100.html

相关文章

  • python文件打包成exe(pyinstaller)
    参数说明-F,–onefile|打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用-D,–onedir|打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码-w,–windowed,–noconsole|使用Windows子系统执行.当程序启动的时候不会打......
  • [880] Calculate Field in ArcGIS Pro (with python code)
    Firstly,weshoulddefineafunction.defIsFlood(join_count):ifjoin_count>0:return"Yes"else:return"No"Secondly,weshouldcallthisfunctionusingtheotherfieldslike IsFlood(!Join_Count!)Here......
  • 在线问诊 Python、FastAPI、Neo4j — 创建 饮食节点
    目录饮食数据创建节点根据疾病、症状,判断出哪些饮食不能吃,哪些建议多吃饮食数据foods_data.csv建议值用“”引起来。避免中间有,号造成误识别饮食"辣椒""大蒜""芥末""海鲜""胡萝卜""核桃仁""菠菜""西红柿""香蕉"创建节点重构代码,将defexecute_write(sel......
  • mmap:Python内存映射文件操作
    前言内存映射通常可以提高I/O的性能,因为使用内存映射时,不需要对每个访问都建立一个单独的系统调用,也不需要在缓冲区之间复制数据,内核和用户都能很方便的直接访问内存。本篇,将详细介绍Python内存映射库:mmap。mmap(读文件)使用mmap()函数可以创建一个内存映射文件。该函数的第1个......
  • python07
    2.字符串格式化字符串格式化,使用更便捷的形式实现字符串的拼接。2.1%2.1.1基本格式化操作name="张云嘉"age=18text="我叫%s,今年%s岁"%("张云嘉",18)text="我叫%s,今年%s岁"%(name,age)text="我叫%s,今年%d岁"%(name,age)text="我叫%(name)s,今年%d岁"......
  • Python
    扫雷importrandom#游戏设置board_size=10#游戏板尺寸num_mines=10#地雷数量#创建游戏板board=[[''for_inrange(board_size)]for_inrange(board_size)]mines=set()#随机布置地雷whilelen(mines)<num_mines:x=random.randint(0,boa......
  • Python-day13
    复习:字符串#字符串生成#字符串对齐#大小写变换#字符串劈分#字符串判断相关方法#字符串替换与合并#字符串比较#字符串切片#格式化字符串#字符串编码解码#字符串查询s1='abc's2="a"+'b'+'c's3=''.join({'a','b','c'})s4=''.join(('a�......
  • Python
    循环结构根据条件或指定次数反复执行某个动作(语句)whilewhile条件: 满足条件执行的语句 break#终止循环else: 不满足条件执行的语句whileTrue: 语句段例:"""使用下列代码循环,直到录入"exit"后退出在控制台中获取一个季度,打印相应的月份输入与输出:春1月2月3月......
  • Python从入门到实战-Scrapy源码2-核心组件
    Scrapy核心组件本篇文章解决:Scrapy有哪些核心组件?以及它们主要负责了哪些工作?这些组件为了完成这些功能,内部又是如何实现的?爬虫类上次讲到Scrapy运行起来后,执行到最后到了Crawler的crawl方法,我们来看这个方法:@defer.inlineCallbacksdefcrawl(self,*args,**kwargs)......
  • # yyds干货盘点 # 系统提取的部分数据存在异常,Python填充有其他更简单的方法么?
    大家好,我是皮皮。一、前言前几天在Python最强王者群【wen】问了一个Python自动化办公的问题,一起来看看吧。请教问题:友信平台因为系统提取的部分数据存在异常,导出的数据经常缺失客户名,但是客户账号是准确的,如果实现客户名自动填充?解决思路:1单独生成客户账号和客户名的表格,两个表格进......