python畫壓力線(壓力線畫法)

本文目錄一覽:

python中matplotlib怎麼畫圖

首先,你要先安裝matplotlib、numpy庫。可以使用pip進行庫的安裝。

分享一段我寫的代碼,是非常簡單、基礎的,你有興趣可以看看,複製過去練習練習,有什麼不懂可以問我。

import numpy as np

import pylab as plt

plt.figure(1)

plt.figure(2)

ax1 = plt.subplot(211)

ax2 = plt.subplot(212)

x = np.linspace(0, 3, 100)

for i in xrange(5):

  plt.figure(1)

  plt.plot(x, np.exp(i * x / 3))

  plt.sca(ax1)

  plt.plot(x, np.sin(i * x ))

  plt.sca(ax2)

  plt.plot(x, np.cos(i*x))

plt.show()

效果圖:

請採納,謝謝!

【Python】【壓力測試】Locust壓力測試工具

性能測試參數

熟悉 Apache ab 工具的同學都知道,它是沒有界面的,通過命令行執行。 Locust 同樣也提供的命令行運行,好處就是更節省客戶端資源。

啟動參數:

–no-web 表示不使用Web界面運行測試。

-c 設置虛擬用戶數。

-r 設置每秒啟動虛擬用戶數。

-t 設置設置運行時間。

出現的報錯及解決辦法:

使用Locust進行性能測試,Locust no-web模式執行命令locust -f zkxl_verify_ locust.py –host= –no-web -c 10 -r 2 -t 1m

提示locust: error: unrecognized arguments: –no-web -c

參考locust官方文檔

將命令參數–no-web 更改為 –headless,將命令中指定用戶並發數的參數 -c 改為 -u,即更改命令為:locust -f zkxl_verify_ locust.py –host= –headless -u 10 -r 2 -t 1m 即可.

locust的測試數據可以保存到CSV文件中,有兩種方法可以進行此操作:

首先,通過Web UI運行Locust時,可以在「Download Data」選項卡下得到CSV文件。

其次,可以使用標籤運行Locust,該標籤將定期保存兩個CSV文件。如果計劃使用–no-web標籤以自動化方式運行Locust

文件將被命名為example_response_times.csv 和 example_stats.csv (使用–csv=example)並記錄Locust構建的信息。

如果你想要更快(慢)的寫入速度,也可以自動以寫入頻率:

此數據將寫入兩個文件,並將_response_times.csv和_stats.csv添加到你提供的名稱中:

打開命令提示符(或Linux終端),輸入 locust –help 。

參考: 官方文檔

一旦單台機器不夠模擬足夠多的用戶時,Locust支持運行在多台機器中進行壓力測試。

為了實現這個,你應該在 master 模式中使用 –master 標記來啟用一個 Locust 實例。這個實例將會運行你啟動測試的 Locust 交互網站並查看實時統計數據。master 節點的機器自身不會模擬任何用戶。相反,你必須使用 –slave 標記啟動一台到多台 Locustslave 機器節點,與標記 –master-host 一起使用(指出master機器的IP/hostname)。

常用的做法是在一台獨立的機器中運行master,在slave機器中每個處理器內核運行一個slave實例。

在 master 模式下啟動 Locust:

在每個 slave 中執行(192.168.0.14 替換為你 msater 的IP):

參數

–master

設置 Locust 為 master 模式。網頁交互會在這台節點機器中運行。

–slave

設置 Locust 為 slave 模式。

–master-host=X.X.X.X

可選項,與 –slave 一起結合使用,用於設置 master 模式下的 master 機器的IP/hostname(默認設置為127.0.0.1)

–master-port=5557

可選項,與 –slave 一起結合使用,用於設置 master 模式下的 master 機器中 Locust 的埠(默認為5557)。注意,locust 將會使用這個指定的埠號,同時指定埠+1的號也會被佔用。因此,5557 會被使用,Locust將會使用 5557 和 5558。

–master-bind-host=X.X.X.X`

可選項,與 –master 一起結合使用。決定在 master 模式下將會綁定什麼網路介面。默認設置為*(所有可用的介面)。

–master-bind-port=5557

可選項,與 –master 一起結合使用。決定哪個網路埠 master 模式將會監聽。默認設置為 5557。注意 Locust 會使用指定的埠號,同時指定埠+1的號也會被佔用。因此,5557 會被使用,Locust 將會使用 5557 和 5558。

–expect-slaves=X

在 no-web 模式下啟動 master 時使用。master 將等待X連接節點在測試開始之前連接。

如下圖,我啟動了一個 master 和兩個 slave,由兩個 slave 來向被測試系統發送請求。

client屬性:

TaskSet類:實現了虛擬用戶所執行任務的調度演算法,包括規劃任務執行順序(schedule_task)、挑選下一個任務(execute_next_task)、執行任務(execute_task)、休眠等待(wait)、中斷控制(interrupt)等等。

在此基礎上,我們就可以在TaskSet子類中採用非常簡潔的方式來描述虛擬用戶的業務測試場景,對虛擬用戶的所有行為(任務)進行組織和描述,並可以對不同任務的權重進行配置。

在TaskSet子類中定義任務信息時,可以採取兩種方式, @task 裝飾器和 tasks 屬性。

@task(1)中的數字表示任務的執行頻率,數值越大表示執行的頻率越高

採用tasks屬性定義任務:

tasks = {test_job1:1, test_job2:2}中,test_job1:1,test_job2:2表示事件執行的頻率,即test_job2的執行頻率是test_job1的兩倍

on_start函數是在Taskset子類中使用比較頻繁的函數。在正式執行測試前執行一次,主要用於完成一些初始化的工作。

例如,當測試某個搜索功能,而該搜索功能又要求必須為登錄態的時候,就可以先在on_start中進行登錄操作,HttpLocust使用到了requests.Session,因此後續所有任務執行過程中就都具有登錄態了

在TaskSequence類中,[email protected]_task()可以用來控制任務的執行順序;裡面的數值越小執行越靠前;

在Taskset類中,內置WAIT_TIME功能,它用於確定模擬用戶在執行任務之間將等待多長時間。Locust提供了一些內置的函數,返回一些常用的wait_time方法。

1、 between(min,max)函數 :用得比較多的函數

wait_time = between(3.0, 10.5):任務之間等待的時間是3到10.5秒之間的任意時間

還可以用任意函數來定義等待時間, 比如平均1秒的等待時間

wait_time = lambda self: random.expovariate(1) 1000

2、 constant(number) 函數:

wait_time=constant(3):任務之間等待的時候是3秒鐘,且等待的時候不能超過任務運行的總時間,也就是在執行py文件時設置的時間

3、 constant_pacing(number) *函數:

wait_time=constant_pacing(3):所以任務每隔3秒執行,但是當到達運行的總時間時,任務運行結束;

現實中有很多任務其實也是有嵌套結構的,比如用戶打開一個網頁首頁後,用戶可能會不喜歡這個網頁直接離開,或者喜歡就留下來,留下來的話,可以選擇看書、聽音樂、或者離開;

在有Taskset嵌套的情況下,執行子任務時, 通過 self.interrupt() 來終止子任務的執行, 來回到父任務類中執行, 否則子任務會一直執行;

在上一頁的案例中,在stay這個類中,對interrupt()方法的調用是非常重要的,這可以讓一個用戶跳出stay這個類有機會執行leave這個任務,否則他一旦進入stay任務就會一直在看書或者聽音樂而難以自拔。

在進行介面多用戶並發測試時,數據的重複使用可能會造成腳本的失敗,那麼需要對用戶數據進行參數化來使腳本運行成功。

已登錄功能為例:

創建 login_user() 方法,定義登錄字典 users , 通過randint 隨機獲取字典中的用戶數據。

在 login() 登錄任務中,調用 login_user() 方法實現 隨機用戶的登錄。

在此我們舉出百度搜索的例子,假設每個人搜索的內容是不相同的;那麼我們可以假設把數據放到隊列中,然後從隊列中依次把數據取出來;

可以利用python中Queue隊列來進行處理;

Queue的種類 :

Queue.Queue(maxsize=0):先進先出隊列

Queue.LifoQueue(maxsize=0):後進先出隊列

Queue.PriorityQueue(maxsize=0):構造一個優先隊列

參數maxsize是個整數,指明了隊列中能存放的數據個數的上限。一旦達到上限,插入會導致阻塞,直到隊列中的數據被消費掉。如果maxsize小於或者等於0,隊列大小沒有限制

Queue的基本方法 :

個別情況下測試數據可重複使用,因此我們可以把參數化數據定義為一個列表,在列表中取出數據;

在某些請求中,需要攜帶之前response中提取的參數,常見場景就是session_id。Python中可用通過re正則匹配,對於返回的html頁面,可用採用lxml庫來定位獲取需要的參數;

我們以Phpwind登陸的來進行舉例,在登陸的介面中需要把token參數傳給伺服器,token的值由頁的介面返回;

方法一:使用正則表達式

方法二:採用lxml庫來定位獲取需要的參數

技術點:

1、導模塊:lxml模塊

2、etree.HTML() 從返回html頁面獲取html文件的dom結構

3、xpath() 獲取token的xpath路徑

catch_response = True :布爾類型,如果設置為 True, 允許該請求被標記為失敗。

通過 client.get() 方法發送請求,將整個請求的給 response, 通過 response.status_code 得請求響應的 HTTP 狀態碼。如果不為 200 則通過 response.failure(‘Failed!’) 列印失敗!

參考文章:

【蟲師】

【官方文檔的中文翻譯】

python怎麼畫曲線

打開Python,使用import導入numpy和matplotlib.pyplot模塊。輸入函數數據,然後使用plt.show()展示繪製的圖像即可。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/286095.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 16:07
下一篇 2024-12-22 16:07

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python for循環求1到100的積

    Python中的for循環可以方便地遍歷列表、元組、字典等數據類型。本文將以Python for循環求1到100的積為中心,從多個方面進行詳細闡述。 一、for循環語法 Pytho…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29

發表回復

登錄後才能評論