Skip to content

Commit f5be1f0

Browse files
Performs an intial read so that list has entries when first shown.
1 parent 4eb12ed commit f5be1f0

1 file changed

Lines changed: 30 additions & 16 deletions

File tree

DemoPrograms/Demo_psutil_Kill_Processes.py

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import psutil
1111
import 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+
3951
def 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

Comments
 (0)