2024-05-29 03:27:37 发布
网友
我试图在python脚本中获取外部程序的内存使用情况。我试着使用脚本http://code.activestate.com/recipes/286222/如下:
m0 = memory() subprocess.call('My program') m1 = memory(m0) print m1
但这似乎只是给了我python脚本的内存使用量,而不是“我的程序”。有没有一种方法可以输出程序的内存使用情况,以便在python脚本中使用?
您可能需要签出psutil模块:http://code.google.com/p/psutil/。主页上的“进程管理”部分提供了获取由pid指定的正在运行的进程的内存使用情况的示例。
是否也要在脚本中生成正在监视的进程?如果是,您可能不想使用subprocess.call,因为这将等待程序退出,并且您将无法在程序运行时监视它。如果要生成进程并监视它,可能需要使用Popenhttp://docs.python.org/library/subprocess.html#subprocess.Popen。这将允许您生成进程,获取pid,将pid交给psutil,然后监视内存使用情况。
尝试使用Psutil
import psutil import subprocess import time SLICE_IN_SECONDS = 1 p = subprocess.Popen('calling/your/program') resultTable = [] while p.poll() == None: resultTable.append(psutil.get_memory_info(p.pid)) time.sleep(SLICE_IN_SECONDS)
如果你看菜谱,你会看到一行:
_proc_status = '/proc/%d/status' % os.getpid()
我建议您用子进程的进程id替换os.getpid()。正如@Neal所说,当我输入这个时,您需要使用Popen并获取返回对象的pid属性。
os.getpid()
Popen
pid
但是,您有一个可能的竞争条件,因为您不知道子进程处于什么状态,并且内存使用量无论如何都会有所不同。
您可能需要签出psutil模块:http://code.google.com/p/psutil/。主页上的“进程管理”部分提供了获取由pid指定的正在运行的进程的内存使用情况的示例。
是否也要在脚本中生成正在监视的进程?如果是,您可能不想使用subprocess.call,因为这将等待程序退出,并且您将无法在程序运行时监视它。如果要生成进程并监视它,可能需要使用Popenhttp://docs.python.org/library/subprocess.html#subprocess.Popen。这将允许您生成进程,获取pid,将pid交给psutil,然后监视内存使用情况。
尝试使用Psutil
如果你看菜谱,你会看到一行:
我建议您用子进程的进程id替换
os.getpid()
。正如@Neal所说,当我输入这个时,您需要使用Popen
并获取返回对象的pid
属性。但是,您有一个可能的竞争条件,因为您不知道子进程处于什么状态,并且内存使用量无论如何都会有所不同。
相关问题 更多 >
编程相关推荐