?
Анимация
JavaScript
|
Главная Библионтека n(ext) Продолжает выполнение до следующей строки в текущей функции или до возврата из нее. Разница между next и step состоит в том, что команда step выполняет в пошаговом режиме вызываемые функции, в то время как команда next выполняет их без остановок. r(eturn) Продолжает выполнение до возврата из текущей функции. c(ont(inue)) Продолжает выполнение до первой (активной) точки останова. l(ist) [first [, last]] Выводит строки исходного кода. При использовании без аргументов выводит 11 строк вокруг текущей, с одним аргументом - вокруг указанной. Если указаны оба аргумента, выводит строки в диапазоне от first до last или, если число last меньше first, last строк, начиная с first. a(rgs) Выводит список аргументов текущей функции. p expression Вычисляет значение выражения expression и выводит его значение. Заметим, что для этих целей Вы можете использовать инструкцию print языка Python, однако print не является командой отладчика. alias [name [command]] Создает псевдоним name для команды command. Команда не должна быть заключена в кавычки. Фрагменты %2 и т. д. заменяются первым, вторым и т. д. аргументами, переданными команде name, а %* - на все аргументы. Если аргумент command опущен, выводит команду для псевдонима name. При вызове без аргументов выводит список всех псевдонимов. Команда command может использовать все, что можно вводить в ответ на приглашение интерпретатора, в том числе другие псевдонимы. Замена псевдонима производится только для первого слова команды, все остальное остается без изменений. Приведем примеры двух полезных псевдонимов, которые можно поместить в конфигурационный файл .pdbrc : команда alias pi for k, v in %1. dict .items(): print k, -", v создает псевдоним pi, выводящий атрибуты указанного экземпляра, а команда alias ps pi self создает псевдоним ps , выводящий атрибуты экземпляра, в теле метода которого псевдоним используется. unalias name Удаляет псевдоним name. [!]statements Выполняет одну строку statements с инструкциями языка Python в текущем кадре стека. Восклицательный знак может быть опущен, за исключением случаев, 25.2 Замер производительности Модули profile и pstats , описанные в этом разделе, позволяют осуществлять замер производительности программ на языке Python, анализировать результат и выводить отчет. Copyright (c) 1994, by InfoSeek Corporation, all rights reserved. Permission to use, copy, modify, and distribute this Python software and its associated documentation for any purpose (subject to the restriction in the following sentence) without fee is hereby granted, provided that the above copyright notice appears in all copies, and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of InfoSeek not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. This permission is explicitly restricted to the copying and modification of the software to remain in Python, compiled Python, or other languages (such as C) wherein the modified or derived code is exclusively imported into a Python module. INFOSEEK CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INFOSEEK CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 25.2.1 Введение Настоящее введение предоставляет краткий обзор основных средств. Он позволит Вам быстро осуществить замер производительности, не вникая в подробности. Для того, чтобы вывести профиль выполнения функции foo() (время выполнения foo() и вызываемых из нее функций), следует выполнить следующие инструкции: когда первое слово инструкции является командой (или псевдонимом) отладчика. Следует помнить, что для изменения глобальных переменных необходимо использовать инструкцию global, например: (Pdb) global list options; list options = [-l] (Pdb) q(uit) Выходит из отладчика. Выполнение отлаживаемой программы прерывается. import profile profile.run(foo()) Чтобы сохранить информацию в файле (например, для сравнения с профилями для других вариантов реализации), укажите имя файла в качестве второго аргумента функции profile.run() : import profile profile.run(foo(), fooprof) Вы можете также использовать файл profile.py в качестве программы для замера производительности другой программы, например: python /usr/local/lib/python1.5/profile.py myscript.py Для обработки статистических данных профиля большой программы могут быть полезны средства модуля pstats. Чтобы загрузить профиль из файла, воспользуйтесь следующим кодом: import pstats p = pstats.Stats(fooprof) Созданный экземпляр класса pstats.Stats имеет множество методов для обработки и вывода статистических данных. Перед выводом отчета функция profile.run() сортирует данные в соответствии со строкой, содержащей имя модуля, номер строки и имя функции. Вы можете воспользоваться другим критерием. Например, следующий код выведет данные, отсортированные по имени функции: p.sort stats(name) p.print stats() А следующий пример выведет 10 наиболее важных строк, отсортированных по совокупному затраченному времени (методы экземпляров класса pstats.Stats возвращают ссылку на экземпляр, что позволяет вызывать последовательно несколько методов в одной инструкции): p.sort stats(cumulative).print stats(10) Именно эти данные позволят Вам понять, на выполнение каких действий уходит больше всего времени. Вы можете ограничить вывод с помощью регулярного выражения, например, вывести статистику для конструкторов классов: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 [ 109 ] 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |