當前位置:首頁 » 編程語言 » 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。

熱點內容
如何下載油猴腳本並安裝 發布:2025-02-08 15:02:12 瀏覽:594
硬體哪個配置性價比高 發布:2025-02-08 14:47:07 瀏覽:146
如何去掉僅限自動配置 發布:2025-02-08 14:37:55 瀏覽:708
壓縮空氣有啥 發布:2025-02-08 14:26:01 瀏覽:703
python輸入一個數 發布:2025-02-08 14:26:00 瀏覽:451
普惠e卡最初密碼是多少 發布:2025-02-08 14:21:57 瀏覽:476
亞索後q腳本 發布:2025-02-08 14:21:06 瀏覽:325
官方源碼 發布:2025-02-08 14:09:25 瀏覽:438
python過濾器 發布:2025-02-08 14:05:06 瀏覽:618
火山幣演算法 發布:2025-02-08 14:04:49 瀏覽:670