使用 Python 的資源使用資訊


要測量 UNIX 資源使用情況,我們需要在程式中使用 resource 模組。此模組還可以控制資源利用率。

要使用此模組,我們應該使用以下方法匯入它:

import resource

資源限制

在此模組中,我們可以使用 setrlimit() 來限制資源利用率。有兩個引數可以限制資源。這些引數是軟限制和硬限制。軟限制基本上是當前限制,它可以在程序中更改,但不能超過硬限制。硬限制可以降低到軟限制以上任何值,但不能增加。

有一些與資源限制相關的方法和常量。這些是。

方法 resource.getrlimit(resource)

此方法用於將軟限制和硬限制作為元組返回。如果指定的資源無效,它將引發 ValueError。

方法 resource.setrlimit(resource, limits)

此方法用於設定資源限制。限制可以分配為軟限制和硬限制的元組。我們還可以使用 RLIM_INFINITY 使資源無限。

方法 resource.prlimit(pid, resource[, limits])

此方法是 setrlimit() 和 getrlimit() 方法的組合。它可以同時獲取和設定任意程序的資源限制。當 pid 為 0 時,它將在當前程序上執行。

一些與資源限制相關的常量:

序號 常量和描述
1

RLIM_INFINITY

無限資源的限制

2

RLIMIT_CORE

當前程序建立的核心檔案的最大大小。

3

RLIMIT_CPU

處理器的最大處理器時間。當限制超出時,會向程序傳送 SIGXCCPU 訊號。

4

RLIMIT_DATA

處理器堆的最大大小

5

RLIMIT_STACK

呼叫堆疊的最大大小。它使用多執行緒程序的主執行緒的堆疊。

6

RLIMIT_NOFILE

當前程序開啟的檔案描述符的最大數量。

7

RLIMIT_MEMLOCK

鎖定記憶體的最大地址空間

8

RLIMIT_NICE

程序的 nice 級別上限

9

RLIMIT_SWAP

交換空間的最大大小

10

RLIMIT_NTPS

系統中偽終端的最大數量

資源使用情況

有一些與資源使用相關的方

方法 resource.getrusage(who)

此方法用於返回當前程序或其子程序使用的物件。它返回不同的欄位。從返回值的欄位中,我們可以獲取有關如何使用資源的資訊。

方法 resource.getpagesize()

此方法用於返回系統頁面中的位元組數。它可能與物理頁面大小不同。

一些與資源使用相關的常量。

序號 常量和描述
1

RUSAGE_SELF

它有助於請求呼叫程序消耗的資源。它是不同執行緒的所有資源的總和。

2

RUSAGE_CHILDREN

它有助於請求子程序消耗的資源。

3

RUSAGE_BOTH

它有助於請求呼叫程序以及子程序消耗的資源。它並非所有系統都可用

4

RUSAGE_THREAD

當前執行緒的資源使用情況。它並非所有系統都可用

示例程式碼

import resource
res_limits = resource.getrusage(resource.RUSAGE_SELF)
print(res_limits)
print('Page Size: ' + str(resource.getpagesize()))
resource.setrlimit(resource.RLIMIT_CPU, (1, 2))
print('Resouce Limits: ' + str(resource.getrlimit(resource.RLIMIT_CPU)))
for a in range(1000):
   for b in range(1000):
      for c in range(1000):
         pass

輸出

$ python3 example.py
resource.struct_rusage(ru_utime=0.035801, ru_stime=0.01074, ru_maxrss=9356, ru_ixrss=0, ru_idrss=0, 
ru_isrss=0, ru_minflt=1147, ru_majflt=0, ru_nswap=0, ru_inblock=0, ru_oublock=0, 
ru_msgsnd=0, ru_msgrcv=0, ru_nsignals=0, ru_nvcsw=0, ru_nivcsw=17)
Page Size: 4096
Resouce Limits: (1, 2)
CPU time limit exceeded (core dumped)

更新於: 2019-07-30

764 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.