我有一个脚本可以做很多事情,我想生成一个线程来监视正在发生的事情的 cpu 和内存使用情况。
监控部分是:
import psutil
import time
import datetime
def MonitorProcess():
procname = "firefox"
while True:
output_sys = open("/tmp/sysstats_counter.log", 'a')
for proc in psutil.process_iter():
if proc.name == procname:
p = proc
p.cmdline
proc_rss, proc_vms = p.get_memory_info()
proc_cpu = p.get_cpu_percent(1)
scol1 = str(proc_rss / 1024)
scol2 = str(proc_cpu)
now = str(datetime.datetime.now())
output_sys.write(scol1)
output_sys.write(", ")
output_sys.write(scol2)
output_sys.write(", ")
output_sys.write(now)
output_sys.write("\n")
output_sys.close( )
time.sleep(1)
我确信有更好的方法来进行监控,但我现在不在乎。
主脚本调用:
RunTasks() # which runs the forground tasks
MonitorProcess() # Which is intended to monitor the tasks CPU and Memory Usage over time
我想同时运行这两个功能。为此,我假设我必须使用线程库。那么方法是否可以执行以下操作:
thread = threading.Thread(target=MonitorProcess())
thread.start
还是我走远了?
另外,当 RunTasks() 函数完成时,如何让 MonitorProcess() 自动停止?我假设我可以测试该进程是否存在,如果它没有杀死该函数???