Computer >> Máy Tính >  >> Lập trình >> Python

Thông tin sử dụng tài nguyên bằng Python

Để đo mức sử dụng tài nguyên UNIX, chúng ta cần sử dụng mô-đun tài nguyên vào các chương trình của mình. Mô-đun này cũng có thể kiểm soát việc sử dụng tài nguyên.

Để sử dụng mô-đun này, chúng ta nên nhập nó bằng cách sử dụng -

 nhập tài nguyên 

Giới hạn tài nguyên

Trong mô-đun này, chúng ta có thể sử dụng setrlimit () để giới hạn việc sử dụng tài nguyên. Có hai tham số để giới hạn tài nguyên. Các thông số này là giới hạn mềm và giới hạn cứng. Giới hạn mềm về cơ bản là giới hạn hiện tại, nó có thể được thay đổi trong quá trình, nhưng nó không thể vượt quá giới hạn cứng. Giới hạn cứng có thể được giảm xuống bất kỳ giá trị nào trên giới hạn mềm, nhưng không thể tăng nó.

Có một số phương pháp và hằng số liên quan đến giới hạn tài nguyên. Đây là.

Phương thức resource.getrlimit (tài nguyên)

Phương thức này được sử dụng để trả về giới hạn mềm và giới hạn cứng dưới dạng một bộ giá trị. Nếu tài nguyên được chỉ định không hợp lệ, nó sẽ làm tăng ValueError.

Phương thức resource.setrlimit (tài nguyên, giới hạn)

Phương pháp này được sử dụng để đặt giới hạn cho các tài nguyên. Các giới hạn có thể được chỉ định dưới dạng một bộ giới hạn mềm và cứng. Chúng tôi cũng có thể sử dụng RLIM_INFINITY để tạo tài nguyên không giới hạn.

Phương thức resource.prlimit (pid, resource [, giới hạn])

Phương thức này là sự kết hợp của phương thức setrlimit () và getrlimit (). Nó có thể nhận và thiết lập các giới hạn tài nguyên cùng một lúc cho một quá trình tùy ý. Khi pid bằng 0, thì nó sẽ hoạt động trên quy trình hiện tại.

Một số hằng số liên quan đến Giới hạn tài nguyên -

Sr.No. Hằng số &Mô tả
1

RLIM_INFINITY

Giới hạn cho một tài nguyên không giới hạn

2

RLIMIT_CORE

Kích thước tối đa của tệp lõi được tạo bởi quy trình hiện tại.

3

RLIMIT_CPU

Thời gian xử lý tối đa của một bộ xử lý. Khi vượt quá giới hạn, tín hiệu SIGXCCPU sẽ được gửi tới quy trình.

4

RLIMIT_DATA

Kích thước tối đa của đống bộ xử lý

5

RLIMIT_STACK

Kích thước tối đa của ngăn xếp cuộc gọi. Nó sử dụng ngăn xếp của luồng chính cho một quy trình đa luồng.

6

RLIMIT_NOFILE

Số lượng tối đa của bộ mô tả tệp Mở cho quy trình hiện tại.

7

RLIMIT_MEMLOCK

Không gian địa chỉ tối đa cho bộ nhớ bị khóa

8

RLIMIT_NICE

Mức trần của một quy trình

9

RLIMIT_SWAP

Kích thước tối đa của không gian hoán đổi

10

RLIMIT_NTPS

Số lượng thiết bị đầu cuối giả tối đa trong hệ thống

Sử dụng tài nguyên

Có các phương thức và hằng số liên quan đến việc sử dụng tài nguyên.

Method resource.getrusage (ai)

Phương thức này được sử dụng để trả về một đối tượng được sử dụng bởi tiến trình hiện tại hoặc đối tượng con của nó. Nó trả về các trường khác nhau. Từ các trường giá trị trả về, chúng ta có thể nhận được thông tin về cách tài nguyên đã được sử dụng.

Phương thức resource.getpagesize ()

Phương thức này được sử dụng để trả về số byte trong một trang hệ thống. Nó có thể không giống với kích thước trang vật lý.

Một số hằng số liên quan đến việc sử dụng tài nguyên.

Sr.No. Hằng số &Mô tả
1

RUSAGE_SELF

Nó giúp yêu cầu tài nguyên được tiêu thụ bởi quá trình gọi. Nó là tổng hợp của tất cả các tài nguyên của các chuỗi khác nhau.

2

RUSAGE_CHILDREN

Nó giúp yêu cầu tài nguyên mà tiến trình con sử dụng.

3

RUSAGE_BOTH

Nó giúp yêu cầu các tài nguyên được sử dụng bởi quá trình gọi cũng như quá trình con. Nó không có sẵn cho tất cả các hệ thống

4

RUSAGE_THREAD

Sử dụng tài nguyên của chủ đề hiện tại. Nó không có sẵn cho tất cả các hệ thống

Mã mẫu

 import resourceres_limits =resource.getrusage (resource.RUSAGE_SELF) print (res_limits) print ('Page Size:' + str (resource.getpagesize ())) resource.setrlimit (resource.RLIMIT_CPU, (1, 2)) print ('Giới hạn tài nguyên:' + str (resource.getrlimit (resource.RLIMIT_CPU))) cho a trong phạm vi (1000):cho b trong phạm vi (1000):cho c trong phạm vi (1000):vượt qua 

Đầu ra

 $ python3 example.pyresource.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_nswap =0, ru_nswap =0 , ru_oublock =0, ru_msgsnd =0, ru_msgrcv =0, ru_nsignals =0, ru_nvcsw =0, ru_nivcsw =17) Kích thước trang:4096