是否有一種簡單的方法來跟蹤進程以及它啓動的任何子進程的CPU時間?跟蹤Python進程和子進程的CPU時間
我試圖子類multiprocessing.Process
到任意時間的功能,如:
import time
from multiprocessing import Process
class TimedProcess(Process):
daemon = True
def __init__(self, *args, **kwargs):
super(TimedProcess, self).__init__(*args, **kwargs)
self.t0 = time.clock()
@property
def duration_seconds(self):
return time.clock() - self.t0
p = TimedProcess(target=my_long_running_func)
p.start()
while p.is_alive():
print p.duration_seconds
time.sleep(1)
然而,當我試圖時間函數涉及Scikits學習或其它代碼涉及的c-擴展或子工藝,我發現我的duration_sections
通常會報告0或僅僅幾秒鐘,即使代碼會運行數小時。我將如何解決這個問題?
檢查psutil –
@CoreyGoldberg,我用,在過去的一點點。你有什麼特別的功能嗎?它似乎沒有包含明確的方法,但我可以想象從他們的'Process.get_children()'和'cpu_times()'方法構建一個方法。 – Cerin
如果您希望從進程內部獲得'time.clock()'的值,那麼您將不得不將它從一個進程發送到另一個進程,例如'multiprocessing.Queue'。 –