1010import psutil
1111import operator
1212
13+ CONFIRM_KILLS = False
1314
1415"""
1516 Utility to show running processes, CPU usage and provides way to kill processes.
@@ -36,6 +37,17 @@ def kill_proc_tree(pid, sig=signal.SIGTERM, include_parent=True,
3637 return (gone , alive )
3738
3839
40+ def show_list_by_name (window ):
41+ psutil .cpu_percent (interval = .1 )
42+ procs = psutil .process_iter ()
43+ all_procs = [[proc .cpu_percent (), proc .name (), proc .pid ] for proc in procs ]
44+ sorted_by_cpu_procs = sorted (all_procs , key = operator .itemgetter (1 ), reverse = False )
45+ display_list = []
46+ for process in sorted_by_cpu_procs :
47+ display_list .append ('{:5d} {:5.2f} {}\n ' .format (process [2 ], process [0 ] / 10 , process [1 ]))
48+ window .FindElement ('_processes_' ).Update (display_list )
49+ return display_list
50+
3951def main ():
4052
4153 # ---------------- Create Form ----------------
@@ -56,9 +68,10 @@ def main():
5668 auto_size_buttons = False ,
5769 default_button_element_size = (12 ,1 ),
5870 return_keyboard_events = True ,
59- ).Layout (layout )
71+ ).Layout (layout ).Finalize ()
72+
6073
61- display_list = None
74+ display_list = show_list_by_name ( window )
6275 # ---------------- main loop ----------------
6376 while (True ):
6477 # --------- Read and update window --------
@@ -72,25 +85,26 @@ def main():
7285
7386 # --------- Do Button Operations --------
7487 if event == 'Sort by Name' :
75- psutil .cpu_percent (interval = 1 )
76- procs = psutil .process_iter ()
77- all_procs = [[proc .cpu_percent (), proc .name (), proc .pid ] for proc in procs ]
78- sorted_by_cpu_procs = sorted (all_procs , key = operator .itemgetter (1 ), reverse = False )
79- display_list = []
80- for process in sorted_by_cpu_procs :
81- display_list .append ('{:5d} {:5.2f} {}\n ' .format (process [2 ], process [0 ]/ 10 , process [1 ]))
82- window .FindElement ('_processes_' ).Update (display_list )
88+ display_list = show_list_by_name (window )
89+ # psutil.cpu_percent(interval=.1)
90+ # procs = psutil.process_iter()
91+ # all_procs = [[proc.cpu_percent(), proc.name(), proc.pid] for proc in procs]
92+ # sorted_by_cpu_procs = sorted(all_procs, key=operator.itemgetter(1), reverse=False)
93+ # display_list = []
94+ # for process in sorted_by_cpu_procs:
95+ # display_list.append('{:5d} {:5.2f} {}\n'.format(process[2], process[0]/10, process[1]))
96+ # window.FindElement('_processes_').Update(display_list)
8397 elif event == 'Kill' :
8498 processes_to_kill = values ['_processes_' ]
8599 for proc in processes_to_kill :
86100 pid = int (proc [0 :5 ])
87- if sg .PopupYesNo ('About to kill {} {}' .format (pid , proc [12 :]), keep_on_top = True ) == 'Yes' :
88- try :
89- kill_proc_tree (pid = pid )
90- except :
91- sg .PopupAutoClose ('Error killing process' , auto_close_duration = 1 )
101+ # if sg.PopupYesNo('About to kill {} {}'.format(pid, proc[12:]), keep_on_top=True) == 'Yes':
102+ try :
103+ kill_proc_tree (pid = pid )
104+ except :
105+ sg .PopupNoWait ('Error killing process' , auto_close_duration = 1 , auto_close = True )
92106 elif event == 'Sort by % CPU' :
93- psutil .cpu_percent (interval = 1 )
107+ psutil .cpu_percent (interval = . 1 )
94108 procs = psutil .process_iter ()
95109 all_procs = [[proc .cpu_percent (), proc .name (), proc .pid ] for proc in procs ]
96110 sorted_by_cpu_procs = sorted (all_procs , key = operator .itemgetter (0 ), reverse = True )
0 commit comments