2015-03-03 3 views
2

Я мониторинг использования ЦП питона сценария, который содержит следующий кодиспользование процессора во время запуска витую реактора

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 aux|grep <script_name>|grep -v grep|awk '{print $3}' 

и условие заключается в том, что он не должен использовать CPU более 5%. Но как только я выполняю скрипт, загрузка процессора идет примерно на 16-20%. После этого через 3 или 4 секунды он уменьшается до 1% или 2%. Мой вопрос: почему загрузка ЦП в начале увеличивается до 16-20%? Я заметил, что при запуске реактора потребление ЦП увеличивается на некоторое время. После этого он вряд ли использует CPU (0,3% до 0,4%) в моем случае.

ответ

1

Запуск интерпретатора Python, чтение всего байт-кода Twisted в память и создание структур данных кода, связанных с запуском процесса Python, занимает немного времени.

Для меня цифры ближе к 3%, чем 20%, но при выполнении ваших сценариев я видел наблюдаемый всплеск процессора. (Я не уверен, какой компьютер вы используете, возможно, он очень недоукомплектован.)

Запуск самого реактора не очень дорог. Вы можете увидеть это, изменив программу, чтобы сделать паузу после импорта, но перед запуском реактора, например, так:

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; do ps aux | grep stack_overflow_script.py | grep -v grep | awk '{print $ 3}'; чтобы я мог видеть тайминги с течением времени. – Glyph

 Смежные вопросы

  • Нет связанных вопросов^_^