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

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

  1. execution timepython script( example.py)读取数据并将数据保存到数据库所花费的总数
  2. CPU utilization当 python 脚本(example.py)运行(执行)时
  3. Memory usage当 python 脚本(example.py)运行(执行)时

我已经用谷歌搜索了很多,并在这里找到了一些信息 ,这里这里每个解释都有不同的方法,我真的很困惑,无法理解当脚本运行时如何捕获上述三个值的方法,所以在 SO 中询问example.py

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

已编辑

遵循的过程

1. 用于查找执行时间

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

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

2. 用于查找 CPU 使用率

top在 example.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 利用率,我的意思是当我们运行文件时使用了多少 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. cd进入解压 RunSnake 的目录
  5. python runsnake.py exampledir/example.profile

用于 CPU 分析

  1. 采用psutil
    1. 创建一个新psutil.ProcessmyProcess = psutil.Process(os.getpid())
    2. 致电myProcess.get_memory_info()myProcess.get_ext_memory_info()myProcess.get_memory_percent()根据需要

用于内存分析

  1. 安装 meliaeeasy_installpip
  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 回答