2010-05-05 3 views
4

Эй, я полностью за этой темой.Профилировщик Python и секунды процессора

Вчера я делал профилирование с использованием модуля профилирования Python для некоторого сценария, над которым я работаю, и блок для времени, затраченного временем, был «вторым процессором». Может ли кто-нибудь напомнить мне об этом?

Например, для некоторого профилирования я получил: 200.750 секунд процессора. Что это значит? В другом случае и для трудоемкого процесса я получил: -347.977 секунд процессора, отрицательное число!

Есть ли способ конвертировать это время в календарное время?

Cheers,

+0

Число секунд процессора никогда не должно быть отрицательным, я подозреваю, что вы здесь что-то не так. –

ответ

8

Грубо говоря, процессорное время, скажем, 200.75 секунд означает, что если только один процессор работал над задачей и что процессор работал на нем все время, это заняло бы 200,75 секунды. Время процессора можно сравнить с настенным часовым временем, что означает фактическое время, прошедшее с начала задачи до конца задачи на часах, висящих на стене вашей комнаты.

Эти два варианта не являются взаимозаменяемыми, и нет возможности конвертировать их друг в друга, если вы точно не знаете, как была запланирована ваша задача и распределена между ядрами процессора вашей системы. Время CPU может быть меньше, чем время настенных часов, если задача распределена между несколькими ядрами ЦП, и это может быть больше, если система находилась под большой нагрузкой, и ваша задача была временно прервана другими задачами.

+0

Ну, это отличный ответ, спасибо! – dude

1

Второй процессор один второй, что ваш процесс фактически запланирован на CPU. Это может быть значительно меньше, чем прошедшее реальное время в случае занятой системы, и оно может быть выше в случае, если ваш процесс работает на нескольких ядрах (если счет выполняется для каждого процесса, а не для потока). Он никогда не должен быть отрицательным, хотя ...

+0

«Второй процессор - это одна секунда, когда ваш процесс на самом деле запланирован на CPU». Я не получил этого ... – dude

+1

Когда вы работаете с многозадачной операционной системой, операционная система распределяет время выполнения на ядрах ЦП по всем работающим процессам (и потокам). Это означает, что каждый процесс запускает часть времени. Я предлагаю вам прочитать что-то о планировании процессора, например http://en.wikipedia.org/wiki/Scheduling_%28computing%29 – wump

+0

Я думаю, что я получил вас, вы имеете в виду фактическое время, которое процесс берет от мощности процессора , Я до сих пор не знаю, как я получил отрицательное число. Я считаю, что это ошибка в профилировщике Python. – dude

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