2015-03-03 55 views
2

我監測python腳本的CPU佔用率的時間,這包含以下代碼CPU使用率在啓動扭器

from twisted.internet import reactor, task 
def fun(): 
    print "I don't know why CPU usage increases in the beginning" 
lc = task.LoopingCall(fun) 
lc.start(10) 
reactor.run() 

我使用ps命令來獲取CPU使用率(百分比)

ps aux|grep <script_name>|grep -v grep|awk '{print $3}' 

並且條件是它不應該使用大於5%的CPU。 但是,只要我執行該腳本,CPU使用率將達到16%到20%左右。之後,在3或4秒內降至1%或2%。 我的問題是,爲什麼CPU使用率從一開始就增加到16%到20%?我觀察到,當反應堆開始運行時,CPU使用率會增加一段時間。之後,我的情況幾乎不會使用CPU(0.3%至0.4%)。

回答

1

啓動Python解釋器,將所有Twisted的字節碼讀入內存,並設置與啓動Python進程相關的代碼數據結構需要一點時間。

對我來說,這個數字比20%接近3%,但是運行你的腳本我看到了一個可觀察的CPU blip。 (我不確定你使用的是什麼樣的電腦,可能它的動力非常不足。)

雖然啓動反應堆本身並不是很昂貴。您可以通過修改你的程序導入後暫停看到這一點,但在啓動反應堆,像這樣前:

from twisted.internet import reactor, task 
def fun(): 
    print("I don't know why CPU usage increases in the beginning") 
lc = task.LoopingCall(fun) 
raw_input("Hit Enter To Start The Reactor:") 
lc.start(10) 
reactor.run() 

如果你的機器是與我相似,你會看到一個暫時現象,你按下回車鍵之前,但這時如果你繼續看着它,你什麼也看不到。

+0

我修改了你的性能監控腳本,如下所示:'while sleep 1s;做ps aux | grep stack_overflow_script.py | grep -v grep | awk'{print $ 3}';完成「,以便隨着時間的推移我可以看到時間。 – Glyph 2015-03-03 22:17:45