私はたくさんのことをするスクリプトを持っていて、起こっていることの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()を自動的に停止させるにはどうすればよいですか?プロセスが存在するかどうか、そしてそれが関数を強制終了しないかどうかをテストできると思いますか?