我正在监视包含以下代码的python脚本的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%? 我观察到当reactor开始运行时,CPU使用率会增加一段时间。在那之后,它几乎不使用CPU(0.3%到0.4%)。
答案 0 :(得分:1)
启动Python解释器,将所有Twisted的字节码读入内存,并设置与启动Python进程相关的代码数据结构需要一点时间。
对我来说,数字接近3%而不是20%,但运行你的脚本我确实看到了一个可观察到的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()
如果您的机器与我的机器相似,您应该在点击输入之前看到一个短信,但是如果您继续观看它,则应该看不到任何内容。