pids = psutil.process_iter()迭代時由於許可權問題可能出現無法獲取到程序資訊的情況,導致迭代失敗,需要通過管理員許可權執行py指令碼才可以順利獲取。**如下:
#!
/usr/bin/python #-*
- encoding:utf-8-
*-import os
import sys
import string
import psutil
import time
import collections
import argparse
# 使用psutil來判斷
import psutil
def proc_exist
(process_name)
: pl = psutil.
pids()
for pid in pl:
if psutil.
process
(pid)
.name()
== process_name:
return pid
def get_pid
(name)
:'''
作用:根據程序名獲取程序pid
'''pids = psutil.
process_iter()
print
("["
+ name +
"]'s pid is:"
) vspid =
0for pid in pids:
if(pid.
name()
== name)
:print
(pid.pid)
vspid = pid.pid
p = psutil.
process
(vspid)
# monitor process and write data to file
interval =
3 # polling seconds
with open
("process_monitor_"
+ p.
name()
+'_'
+str
(vspid)
+".csv"
,"a+"
) as f:
f.write
("time,cpu,mem_percent,cpu_time,,,,ctx_num,,thread_num,read_count,write_count,,,,,net,,,,,,,,disk_io,memory_info,,disk_percent\n"
)while
(proc_exist
(name)):
current_time = time.
strftime
('%h:%m:%s'
,time.
localtime
(time.
time()
))cpu_percent = p.
cpu_percent()
mem_percent = p.
memory_percent()
cpu_time = p.
cpu_times()
ctx_num =p.
num_ctx_switches()
thread_num = p.
num_threads()
#memory_info = p.memory_info()
io_counters = p.
io_counters()
net = psutil.
net_io_counters()
disk = psutil.
disk_usage
('/'
)#disk_io = psutil.disk_io_counters()
line = current_time +
','+
str(cpu_percent)
+','
+str
(mem_percent)
+','
+str
(cpu_time)
+','
+str
(ctx_num)
+','
+str
(thread_num)
+','
+str
(io_counters)
+','
+str
(net)
+','
+str
(disk)
print (line)
f.write
(line +
"\n"
) time.
sleep
(interval)
csvfile.
close
()
def main
(ar**)
:get_pid
( sys.ar**[1]
)if __name__ ==
"__main__"
:main
(sys.ar**[1]
)
普通許可權執行時可能會出現:
出現oserror:[winerror 0]錯誤提示
使用批處理獲取管理員許可權開啟cmd然後執行py指令碼:
%1 mshta vbscript:createobject(
).shellexecute(
"cmd.exe","/c %~s0 ::","","runas",1)
(window.close)
&&exit
注意:此時路徑在cmd所在的根路徑,執行py指令碼時注意路徑問題,否則會報找不到該檔案。**如下:
%1 mshta vbscript:createobject(
).shellexecute(
"cmd.exe","/c %~s0 ::","","runas",1)
(window.close)
&&exit
cd /d e:\path\
tasklist|
find /i "a.exe"
if %errorlevel%==0 (
start t.py a.exe
)
至此,解決了許可權問題可以保證py指令碼在windows系統上以管理員許可權執行。 學習python可以從事什麼工作
對於python這門語言,很多人都是比較熟悉的,卻又不太了解的,很多人都會問為什麼要學習python?即便是學會python可以幹什麼?說起python就業,很多人都會想到python領域,其實python爬蟲算是其中比較簡單的,通過python抓取網頁上的內容而已。一般學習會python可以往很多...
python 工作 python工作中總結
以下方法平時很少用,用其它解決方法,只是總結了一些其它同事的技巧 1 如何自動生成列表,加乙個條件還能篩選 x for x in range 10 if x 5 來生乙個字典試試 d randint需要匯入包 from random import randint 用迭代篩選字典方法 iteritem...
Python 我工作學習中的好幫手
最近在工作中,我需要在solaris上寫很多測試或者輔助工作的指令碼。因為單位只推薦使用perl或者python,所以我不能選擇我最喜歡的ruby,當然我不會去選擇perl 不是說perl不好,只是我不喜歡perl 其實python我也有不喜歡的地方,譬如那種ugly的縮排,還有混雜著len lis...