Как заставить профилировщик PyCharm показывать только время моего исходного кода, а не какие-либо библиотеки?
Когда я запускаю профилировщик PyCharm (краткое вступительное видео здесь - https://www.youtube.com/watch?v=QSueV8MYtlw), я получаю тысячи строк, таких как hasattr или npyio.py (откуда это взялось, я делаю даже не используйте numpy), которые не помогают мне понять, что происходит вообще.
Как я могу сделать так, чтобы PyCharm profiler отображал только время моего исходного кода, а не какие-либо библиотеки или системные вызовы?
Другими словами, можно ли назначать время, потраченное на системные вызовы и библиотеки, моим функциям, которые их вызывают?
Другими словами (вторая версия), все, что мне нужно, это количество миллисекунд рядом с каждой строкой моего кода Python, а не что-нибудь еще.
1 ответ
Я создал код, чтобы предоставить пример и, надеюсь, дать приемлемый ответ:
import datetime as dt
class something:
def something_else(self):
other_list = range(100000)
for num in other_list:
datetimeobj = dt.datetime.fromtimestamp(num)
print(num)
print(datetimeobj)
def something_different(self):
other_list = range(100000)
for num in other_list:
datetimeobj = dt.datetime.fromtimestamp(num)
print(num)
print(datetimeobj)
st = something()
st.something_else()
st.something_different()
Код привел к изображению ниже, которое я отсортировал по имени. (В моем случае это возможно, потому что все встроенные методы имеют префикс "<". После этого я теперь вижу, что main занял 100% от общего времени (столбец: Время (мс)). Something_else занял 50,8% время и something_different заняли 49,2% времени (итоговое значение также составило 100%)(Столбец: Время (мс)) Время, проведенное внутри каждого из двух собственных методов, составляло 2,0% для каждого (Столбец: Собственное время (мс))) -> Это означает, что на базовые вызовы из something_else приходилось 48,8%, на something_different- 47,2%, а на написанные мной части приходилось 4,0% от общего времени. Остальные 96,0% кода выполняются встроенными методами, что я звоню.
Ваши вопросы были:
Как я могу сделать так, чтобы профилировщик PyCharm отображал только время моего исходного кода, а не какие-либо библиотеки или системные вызовы? -> Это то, что вы видите в столбце: «Собственное время (мс)» -> 2,0% (время, проведенное внутри конкретного метода).
Другими словами, можно ли назначить время, потраченное на системные вызовы и библиотеки, на те функции, которые их вызывают? -> Это то, что вы видите в столбце: «Время (мс)» (Затраченное время, включая лежащие в основе методы.)
Вычтите два столбца, и вы получите время, потраченное только на базовые методы.
К сожалению, мне не удалось найти метод фильтрации в профилировщике, но можно экспортировать список, скопировав его, и таким образом вы можете создать что-нибудь еще для фильтрации, например, «<built_in» для очистки данных.