11

私はpythonを使用しています。以下のようなコードがあるとします

たとえば .py

import os, psutil
import MySQLdb as mdb

conn = mdb.connect(user='root', passwd='redhat', db='File_Data', host='localhost', charset="utf8")
file_path = "/home/local/user/Module/File_processing/part-file.txt"
p = psutil.Process(os.getpid())
cursor = conn.cursor()

for line in file_open:
    result = line.split('\t')
    query = "insert into PerformaceReport (campaignID, keywordID, keyword, avgPosition)"
    query += " VALUES (%s,%s,'%s',%s)%(result[0],result[1],result[2],result[3])"
    cursor.execute( query )
conn.commit()

print p.get_cpu_times()
print p.get_memory_percent()

上記のコードは、テキストファイルからデータを読み取り、データベースに保存し、正常に動作します

コマンドでファイルを実行していますpython path/to/the/example.py

今私がやろうとしているのは、以下の3つの値/情報を見つけてキャプチャすることです

  1. データを読み取ってデータベースに保存するためにexecution timepython script( ) が使用した合計example.py
  2. CPU utilizationPythonスクリプト( example.py)が実行(実行)されたとき
  3. Memory usagePythonスクリプト( example.py)が実行(実行)されたとき

私はすでに多くのグーグル検索を 行い、ここここここでいくつかの情報を見つけました。各説明には異なるアプローチがあり、スクリプトが実行されたときに上記の3つの値をキャプチャする方法についてのアプローチを理解できず、SOで尋ねましたexample.py

上記のニーズに合わせて上記の値に適合/キャプチャする実用的な例(コード)を誰かに提供してください。これにより、さらなるニーズにさらに拡張できます

編集済み

従ったプロセス

1. 実行時間の検索用

以下のコマンドで example.py ファイルを実行します。

  python -m cProfile -o file.profile example.py 

2. CPU使用率を調べるため

topexample.py の実行後にターミナルでコマンドを実行する

結果:

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  1354 root      20   0  138m  17m 7200 S  2.0  0.6   2:40.50 Xorg                                             
  2672 shivakri  20   0  581m  19m  12m S  1.3  0.6   0:07.60 gnome-terminal                                   
  2587 shivakri  20   0  987m 168m  33m S  1.0  5.6   5:25.26 firefox                                          
  2780 shivakri  20   0 1233m  51m  16m S  1.0  1.7   0:16.51 gedit                                            
  2163 shivakri  20   0  821m 135m  43m S  0.7  4.5   4:58.74 chrome                                           
  1938 shivakri  20   0  567m  15m  11m S  0.3  0.5   0:06.64 metacity  
  ........
  ........

上記の結果で、どのように/どこで CPU/メモリ使用率の値を見つけることができますか?%CPU %MEMを含む行から値を取得する必要があるかどうgnome-terminalか (ターミナルを介してファイルを実行しているためですか?)

Aslotopは、実行中の合計 CPU 使用率プロセスを見つけるために使用されますが、実行/実行中の example.py スクリプトのみの CPU 使用率を見つける必要があります。 .py)

最後に、Pythonスクリプト(example.py)を実行するときの私の意図は、実行時間、スクリプトの実行に使用されるCPU使用率、スクリプトの実行に使用されるメモリなどの値をどこかに記録/保存する必要があります(テキストファイル)または何か

4

2 に答える 2

10

時間プロファイリング用

  1. cdを含むディレクトリにexample.py(これを呼び出しましょうexampledir)。
  2. 走るpython -m cProfile -o example.profile example.py
  3. RunSnakeをダウンロードして、どこでも解凍します
  4. cdRunSnakeを解凍したディレクトリに
  5. 走るpython runsnake.py exampledir/example.profile

CPUプロファイリング用

  1. 使用するpsutil
    1. で新しいpsutil.Processを作成しますmyProcess = psutil.Process(os.getpid())
    2. またはmyProcess.get_memory_info()またはmyProcess.get_ext_memory_info()必要myProcess.get_memory_percent()に応じて

メモリプロファイリング用

  1. easy_installまたはでメリアスをインストールするpip
  2. 次のコード行を先頭に追加しますexample.py

from meliae import scanner # [[source](http://www.vrplumber.com/programming/runsnakerun/)]
scanner.dump_all_objects( filename ) # you can pass a file-handle if you prefer

  1. run runsnakemem fpath、ここで、fpathは上記のコードで使用したファイルへのパスです。

これにより、RunSnakeRunで取得したものと同様のビジュアルメモリプロファイラーが取得されます。

お役に立てれば

于 2012-11-22T07:34:51.297 に答える
0

この要件に関してまだ誰かが何かを探している場合は、有益なブログ投稿を次に示します。

実行中の Python プログラムのメモリ使用量を監視する

于 2020-02-06T05:51:26.730 に答える