用python开发一个性能压测框架(超级简单)

用python开发一个性能压测框架(超级简单)

该框架是一个基础框架,超级简单,已经跑通,可以进行优化扩展

由于工作需要,最近开发了一款python性能压测框架,主要是对后端接口进行多线程压测

主要使用 Python 的 requests 库来发送请求,并使用 threading 或 asyncio 来模拟并发请求

代码如下:

import requests
import threading
import time

class PerformanceTester:
    def __init__(self, url, num_threads=1, num_requests=10):
        self.url = url
        self.num_threads = num_threads
        self.num_requests = num_requests
        self.results = []

    def _send_request(self):
        start_time = time.time()
        response = requests.get(self.url)
        end_time = time.time()
        elapsed_time = end_time - start_time
        self.results.append(elapsed_time)

    def run_test(self):
        threads = []
        for _ in range(self.num_threads):
            for _ in range(self.num_requests):
                thread = threading.Thread(target=self._send_request)
                thread.start()
                threads.append(thread)

        for thread in threads:
            thread.join()

        avg_response_time = sum(self.results) / len(self.results)
        max_response_time = max(self.results)
        min_response_time = min(self.results)

        print(f"Avg Response Time: {avg_response_time}")
        print(f"Max Response Time: {max_response_time}")
        print(f"Min Response Time: {min_response_time}")

if __name__ == "__main__":
    tester = PerformanceTester("https://example.com/api", num_threads=5, num_requests=20)
    tester.run_test()

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这个问题比较复杂,我会尽量给你提供思路和代码示例,但不保证完全正确和可运行,需要你自己进行调试和优化。以下是一个简单的带宽压测系统的Python实现: ```python import socket import time def bandwidth_test(server_ip, server_port, num_packets, packet_size): # 创建客户端套接字 client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_socket.connect((server_ip, server_port)) # 发送指定数量和大小的数据包 for i in range(num_packets): data = b'0' * packet_size start_time = time.time() client_socket.sendall(data) end_time = time.time() elapsed_time = end_time - start_time print(f"Packet {i+1}: {packet_size} bytes in {elapsed_time:.6f} seconds ({packet_size/elapsed_time/1024/1024:.2f} MB/s)") # 关闭客户端套接字 client_socket.close() if __name__ == "__main__": server_ip = "192.168.1.100" # 服务器IP地址 server_port = 8080 # 服务器端口号 num_packets = 10 # 发送数据包的数量 packet_size = 1024 * 1024 # 发送数据包的大小(单位:字节) bandwidth_test(server_ip, server_port, num_packets, packet_size) ``` 这个程序使用TCP协议与指定的服务器建立连接,然后发送指定数量和大小的数据包。在发送每个数据包时,程序会记录当前时间,然后再发送数据包,最后记录发送完成的时间,并计算出发送数据包所花费的时间和带宽。最后关闭客户端套接字,结束测试。 你可以根据自己的需求,修改程序中的IP地址、端口号、数据包数量和大小等参数,以实现你想要的带宽测试。需要注意的是,这个程序仅作为参考,实际使用时需要进行更多的优化和调试,以确保测试结果的准确性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值