查找内存使用情况,CPU利用率,运行python脚本的执行时间

时间:2012-11-22 06:47:23

标签: python memory cpu-usage execution-time

我正在使用python,并假设我有一些代码如下

example.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

运行该文件

现在我要做的是找到/捕获以下三个值/信息

  1. python脚本(execution time)用于读取数据并将数据保存到数据库的总example.py
  2. 当python脚本(CPU utilization)运行(执行)时,
  3. example.py 当python脚本(Memory usage)运行(执行)
  4. 时,
  5. example.py

    我已经搜索了很多内容并找到了一些信息hereherehere,每个解释都有不同的方法,我真的很困惑,无法理解如何捕获的方法当脚本example.py运行时,以上三个值在SO

    中被询问

    任何人都可以请我提供一个适合我上面提到的上述值的工作示例(代码),以便我可以进一步扩展到我的进一步需求

    已修改

    遵循流程

    1。查找执行时间

    使用以下命令运行example.py文件

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

    2。查找CPU使用情况

    在example.py运行后在终端中执行top命令

    结果:

       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? (因为我们通过终端运行文件?)

    Aslo top用于查找正在运行的总cpu利用率进程,但我们需要在执行/运行时查找example.py脚本的cpu利用率,我的意思是CPU,内存是多少在我们运行文件时使用(example.py)

    最后我的意图是当我运行python脚本(example.py)时,执行时间,运行脚本所花费的CPU利用率以及用于运行脚本的内存等值必须记录/存储在某些位置(在文本文件中)或其他东西

2 个答案:

答案 0 :(得分:8)

进行时间分析

  1. cd进入包含example.py的目录(让我们称之为exampledir)。
  2. 运行python -m cProfile -o example.profile example.py
  3. download RunSnake并将其解压缩到任何地方
  4. cd进入解压缩RunSnake
  5. 的目录
  6. 运行python runsnake.py exampledir/example.profile
  7. 用于CPU性能分析

    1. 使用psutil
      1. 使用psutil.Process
      2. 创建新的myProcess = psutil.Process(os.getpid())
      3. 根据需要致电myProcess.get_memory_info()myProcess.get_ext_memory_info()myProcess.get_memory_percent()
    2. 用于内存分析

      1. 使用easy_installpip
      2. 安装meliae
      3. 将以下代码行添加到example.py
      4. 的顶部
        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. 运行runsnakemem fpath,其中fpath是您在上述代码中使用的文件的路径。
        2. 这应该会为您提供一个类似于RunSnakeRun所用内容的可视内存分析器。

          希望这有帮助

答案 1 :(得分:0)

如果有人仍在搜索有关此要求的任何内容,这是一篇内容丰富的博客文章:

Monitoring memory usage of a running Python program