Я думаю, вы видели такие идеи:
if __name__ == "__main__":
# do something if this script is invoked
# as python scriptname. Otherwise, gets ignored.
Что происходит, когда вы вызываете python для скрипта, этот файл имеет атрибут __name__
, установленный в "__main__"
, если этофайл напрямую вызывается исполняемым файлом python.В противном случае (если он не вызывается напрямую) он импортируется.
Теперь вы можете использовать этот трюк в своих сценариях, если вам нужно, например, при условии, что у вас есть:
def somescriptfunc():
# does something
pass
if __name__ == "__main__":
# do something if this script is invoked
# as python scriptname. Otherwise, gets ignored.
import cProfile
cProfile.run('somescriptfunc()')
Это изменит ваш сценарий.При импорте его функции-члены, классы и т. Д. Могут использоваться как обычно.Когда запускает из командной строки, он профилируется.
Это то, что вы ищете?
Из комментариев, которые я собрал большеВозможно, это необходимо, поэтому здесь идет речь:
Если вы запускаете скрипт из изменений CGI, он имеет вид:
# do some stuff to extract the parameters
# do something with the parameters
# return the response.
Когда я говорю абстрактно, вы можете сделать это:
def do_something_with_parameters(param1, param2):
pass
if __name__ = "__main__":
import cProfile
cProfile.run('do_something_with_parameters(param1=\'sometestvalue\')')
Поместите этот файл в путь Python.При запуске он сам профилирует функцию, которую вы хотите профилировать.
Теперь для вашего CGI-скрипта создайте скрипт, который будет:
import {insert name of script from above here}
# do something to determine parameter values
# do something with them *via the function*:
do_something_with_parameters(param1=..., param2=...)
# return something
Так что ваш cgi-скрипт просто станет маленькой оберткойдля вашей функции (которая в любом случае), и теперь ваша функция является самопроверкой.
Затем вы можете профилировать функцию, используя установленные значения на рабочем столе, вне рабочего сервера.
Вероятно, есть более аккуратные способы добиться этого, но это сработало бы.