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

news/发布时间2024/5/20 7:30:14

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

import threading
import time
import requests
import json
import concurrent.futuresdef 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_iddef 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 Trueelse:print(f"发送输出请求完毕,返回状态码:{response.status_code}")def run():start_time = time.time()thread_id = threading.current_thread().identprint("线程", thread_id, "开始执行")tag = Falsetask_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_timeprint("线程", thread_id, "完成,执行时间:", execution_time, "秒")return execution_timedef 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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/60765307.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

在线问诊 Python、FastAPI、Neo4j — 创建 饮食节点

目录饮食数据创建节点 根据疾病、症状,判断出哪些饮食不能吃,哪些建议多吃 饮食数据 foods_data.csv 建议值用“”引起来。避免中间有,号造成误识别 饮食 "辣椒" "大蒜" "芥末" "海鲜" "胡萝卜" "核桃仁" &quo…

面试问题之如何解释微服务

这次的面试还是感觉非常愉快,没有那么憋屈,问的问题也非常有意思。 问题 假设现在有一个人完全不懂微服务,你能和对方解释下什么是微服务吗?面试回答 这个问题如果要完全回答好,感觉不是那么容易。 什么是微服务 很多人都知道现代的开发流程多是前后端分离,后端采用部署服…

Java 8 和 11 开始提供的新特性面试

说下 Lambda function Lambda 是 JDK 8 以后的版本才提供的功能。 在 JDK 8 之前是没有的。 Java Lambda表达式 的一个重要用法是简化某些匿名内部类 (Anonymous Classes )的写法。实际上Lambda表达式并不仅仅是匿名内部类的语法糖,JVM内部是通过invokedynamic 指令来实现La…

Java 消息策略的实现 - Kafak 是怎么设计的

这个也是开放讨论题,主要讨论下 Kafka 在消息中是如何进行实现的。总结 这个题目的开发性太强了。 Kafka 可以用的地方非常多,我经历过的项目有 Kafka 用在消息处理策略上的。这个主要是 IoT 项目,因为这个项目需要对温度传感器采集获得数据。 当我们有多个数据采集点的时候…

巨杉数据库入选2023信创企业排行榜

在信创数据库领域的丰富技术积累和领先的行业实践能力,入选2023信创数据库企业排行榜,这是对巨杉数据库在分布式数据库领域自研道路的充分肯定。 近期,由中科院旗下的互联网周刊、德本咨询和eNet研究院共同发布了《2023信创数据库企业排行榜》。在经过全面多维的严格评估后,…

Docker Desktop 界面功能介绍,添加国内镜像源

默认情况下,Docker Desktop会从Docker Hub下载镜像,但在国内由于网络的原因,下载速度可能较慢,配置国内镜像源可以提速镜像下载。在Docker Desktop中配置镜像源非常简单,点击1、2后,在3处粘贴如下内容,重启生效。 镜像源修改设置 默认情况下,Docker Desktop会从Docker…