Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonを使用したリソース使用情報


UNIXのリソース使用量を測定するには、プログラムでリソースモジュールを使用する必要があります。このモジュールは、リソース使用率を制御することもできます。

このモジュールを使用するには、-

を使用してインポートする必要があります
import resource

リソースの制限

このモジュールでは、setrlimit()を使用してリソース使用率を制限できます。リソースを制限するための2つのパラメーターがあります。これらのパラメータは、ソフト制限とハード制限です。ソフト制限は基本的に現在の制限であり、プロセスを切り替えることができますが、ハード制限を超えることはできません。ハード制限はソフト制限を超える任意の値に減らすことができますが、増やすことはできません。

リソース制限に関連するいくつかのメソッドと定数があります。これらは。

メソッドresource.getrlimit(resource)

このメソッドは、ソフト制限とハード制限をタプルとして返すために使用されます。指定されたリソースが無効な場合、ValueErrorが発生します。

メソッドresource.setrlimit(resource、limits)

このメソッドは、リソースに制限を設定するために使用されます。制限は、ソフト制限とハード制限のタプルとして割り当てることができます。 RLIM_INFINITYを使用して、無制限のリソースを作成することもできます。

メソッドresource.prlimit(pid、resource [、limits])

このメソッドは、setrlimit()メソッドとgetrlimit()メソッドを組み合わせたものです。任意のプロセスのリソース制限を同時に取得および設定できます。 pidが0の場合、現在のプロセスで機能します。

リソース制限に関連するいくつかの定数-

定数と説明
Sr.No。
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

プロセスの素晴らしいレベルの上限

9

RLIMIT_SWAP

スワップスペースの最大サイズ

10

RLIMIT_NTPS

システム内の疑似端末の最大数

リソースの使用

リソース使用量に関連するメソッドと定数があります。

メソッドresource.getrusage(who)

このメソッドは、現在のプロセスまたはその子によって使用されているオブジェクトを返すために使用されます。異なるフィールドを返します。戻り値のフィールドから、リソースがどのように使用されたかに関する情報を取得できます。

メソッドresource.getpagesize()

このメソッドは、システムページのバイト数を返すために使用されます。物理的なページサイズと同じではない場合があります。

リソース使用量に関連するいくつかの定数。

定数と説明
Sr.No。
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)

  1. Pythonを使用しているWhatsapp?

    このセクションでは、Whatsappチャットボットを作成しますが、TwitterやFacebook用の他のいくつかのチャットボットとは異なり、whatsappのポリシーのため、whatsappチャットボットはプラットフォーム上で直接実行されません。 しかし、Pythonの非常にスマートなパッケージであるseleniumを使用して、開発者がブラウザのアクティビティを自動化できるようにする方法があります。これにより、ブラウザからwhatsapp-webを利用できます。 要件 物事を成し遂げるためには、3つの基本的なことが必要です。セレン。 ターミナルで以下のコマンドを実行するだけで、pipを

  2. PythonでのCX_Freezeの使用

    時々私たちは非常にエキサイティングな何か違うものを作りたいと感じます、そして人間の性質によれば、私たちはいつもそれを共有するのが大好きです。 Pythonもそれらの願いを満たします。 Pythonを使用して、Pythonプログラムを友人と共有したい場合は、それを行うことができます。必要なのは、マシンのプログラムで使用されるすべてのモジュールに同じバージョンのPythonをインストールすることだけです。 まず、 pip install CX_Frezzeを使用してCX_Freezeモジュールをインストールする必要があります コマンドプロンプトのコマンド。 最初のステップは、この割り当て、