当前位置:首页 » 编程语言 » python监控进程

python监控进程

发布时间: 2023-07-16 05:14:40

① 7种检测python程序运行时间、CPU和内存占用的方法

1. 使用装饰器来衡量函数执行时间

有一个简单方法,那就是定义一个装饰器来测量函数的执行时间,并输出结果:

import time

from functoolsimport wraps

import random

def fn_timer(function):

  @wraps(function)

  def function_timer(*args, **kwargs):

      t0= time.time()

      result= function(*args, **kwargs)

      t1= time.time()

      print("Total time running %s: %s seconds" %

          (function.__name__, str(t1- t0))

)

      return result

return function_timer

@fn_timer

def random_sort(n):

  return sorted([random.random() for i in range(n)])

if __name__== "__main__":

  random_sort(2000000)

输出:Total time running random_sort: 0.6598007678985596 seconds

使用方式的话,就是在要监控的函数定义上面加上 @fn_timer 就行了

或者

# 可监控程序运行时间

import time

import random

def clock(func):

    def wrapper(*args, **kwargs):

        start_time= time.time()

        result= func(*args, **kwargs)

        end_time= time.time()

        print("共耗时: %s秒" % round(end_time- start_time, 5))

        return result

return wrapper

@clock

def random_sort(n):

  return sorted([random.random() for i in range(n)])

if __name__== "__main__":

  random_sort(2000000)

输出结果:共耗时: 0.65634秒

2. 使用timeit模块

另一种方法是使用timeit模块,用来计算平均时间消耗。

执行下面的脚本可以运行该模块。

这里的timing_functions是Python脚本文件名称。

在输出的末尾,可以看到以下结果:4 loops, best of 5: 2.08 sec per loop

这表示测试了4次,平均每次测试重复5次,最好的测试结果是2.08秒。

如果不指定测试或重复次数,默认值为10次测试,每次重复5次。

3. 使用Unix系统中的time命令

然而,装饰器和timeit都是基于Python的。在外部环境测试Python时,unix time实用工具就非常有用。

运行time实用工具:

输出结果为:

Total time running random_sort: 1.3931210041 seconds

real 1.49

user 1.40

sys 0.08

第一行来自预定义的装饰器,其他三行为:

    real表示的是执行脚本的总时间

    user表示的是执行脚本消耗的CPU时间。

    sys表示的是执行内核函数消耗的时间。

注意:根据维基网络的定义,内核是一个计算机程序,用来管理软件的输入输出,并将其翻译成CPU和其他计算机中的电子设备能够执行的数据处理指令。

因此,Real执行时间和User+Sys执行时间的差就是消耗在输入/输出和系统执行其他任务时消耗的时间。

4. 使用cProfile模块

5. 使用line_profiler模块

6. 使用memory_profiler模块

7. 使用guppy包

② 怎么用python查询出 进程 CPU使用率 内存使用 句柄数

看到句柄数这几个字,我猜可能是要windows下运行的?

可能答非所问,不过在linux下最好的用的莫过于psutil了,你可以通过进程名或pid很好的监控任意进程的系统占用情况,甚至进程建立的每个连接都能获取到

>>>importpsutil
>>>psutil.pids()
[1,2,3,4,5,6,7,46,48,50,51,178,182,222,223,224,
268,1215,1216,1220,1221,1243,1244,1301,1601,2237,2355,
2637,2774,3932,4176,4177,4185,4187,4189,4225,4243,4245,
4263,4282,4306,4311,4312,4313,4314,4337,4339,4357,4358,
4363,4383,4395,4408,4433,4443,4445,4446,5167,5234,5235,
5252,5318,5424,5644,6987,7054,7055,7071]
>>>
>>>p=psutil.Process(7055)
>>>p.name()
'python'
>>>p.exe()
'/usr/bin/python'
>>>p.cwd()
'/home/giampaolo'
>>>p.cmdline()
['/usr/bin/python','main.py']
>>>
>>>p.status()
'running'
>>>p.cpu_percent(interval=1.0)
12.1

>>>psutil.net_io_counters(pernic=True)
{'eth0':netio(bytes_sent=485291293,bytes_recv=6004858642,packets_sent=3251564,packets_recv=4787798,errin=0,errout=0,dropin=0,dropout=0),
'lo':netio(bytes_sent=2838627,bytes_recv=2838627,packets_sent=30567,packets_recv=30567,errin=0,errout=0,dropin=0,dropout=0)}

从官方文档上了一部分出来,有没有碉堡了的感觉,快去翻一下文档吧,非常容易使用

③ python 如何监测进程是否关闭

如果被监测程序是你自己编写的,那你可以在程序进程结束的时候主动去通知监测进程。

如果不是,而你要监测它的运行情况,那么这和操作系统有关。Windows和Linux下的处理方式是不一样的。

④ Python如何监测Linux隐藏进程

我理解你说的隐藏进程可能是类似恶意软件隐藏自身的进程。
python可以通过读取/proc的结果来对比ps的结果来找到和监视这些隐藏的进程。

⑤ python 如何监控进程GDI对象

GR_GDIOBJECTS
0
ReturnthecountofGDIobjects.//

GR_USEROBJECTS
1
ReturnthecountofUSERobjects.

HANDLEhProcess=OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,FALSE,7604);//传对应的进程ID

//GetProcessMemoryInfo(hProcess,&ProMem,sizeof(ProMem));

DWORDdwGdi=GetGuiResources(hProcess,GR_GDIOBJECTS);
DWORDdwUser=GetGuiResources(hProcess,GR_USEROBJECTS);

CloseHandle(hProcess);

⑥ 写一个监控进程的Python脚本,如果进程挂了就自动启动这个进程,相当于一个watchdog的作用~~谢谢

如果是Linux系统,为什么不用shell监控,因为python也是调用linux命令去启动进程。

⑦ python怎样实现监听程序的端口。如apache开着, 一旦有数据到达80的端口 他就会记录下来

apache占用了80端口python的socket就不能用了啊,要不怎么知道数据发给谁呢,你可以让python使用80,apache使用别的,然后让python收到后转发给apache。

热点内容
scraino编程 发布:2025-02-08 11:59:41 浏览:263
我的世界服务器进不去该怎么办 发布:2025-02-08 11:47:41 浏览:234
linux的telnet 发布:2025-02-08 11:47:36 浏览:286
压缩袋打折 发布:2025-02-08 11:46:02 浏览:257
c语言结构体题目 发布:2025-02-08 11:46:01 浏览:336
如何svn限制一些外网不能访问 发布:2025-02-08 11:46:00 浏览:990
服务器外网ip咋配置 发布:2025-02-08 11:42:19 浏览:641
最优树算法 发布:2025-02-08 11:37:19 浏览:229
linux保存路由 发布:2025-02-08 11:36:25 浏览:557
M合成算法 发布:2025-02-08 11:26:22 浏览:329