Python 无法理解如何在程序内部调用cProfile

Python 无法理解如何在程序内部调用cProfile,python,time,profiler,cprofile,Python,Time,Profiler,Cprofile,对于初学者的问题,我很抱歉,但我无法理解cProfile,因为我对Python非常陌生 我可以通过我的终端运行它: python -m cProfile myscript.py 但是我需要在Web服务器上运行它,所以我想把命令放在它将要查看的脚本中。我该怎么做?我见过一些东西使用诸如uuu init_uuuuuuuuuuuuuuuuuuu和uuuuuuuu main_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 我知道这很简单,我只是仍在努力学习一切,我

对于初学者的问题,我很抱歉,但我无法理解cProfile,因为我对Python非常陌生

我可以通过我的终端运行它:

python -m cProfile myscript.py
但是我需要在Web服务器上运行它,所以我想把命令放在它将要查看的脚本中。我该怎么做?我见过一些东西使用诸如uuu init_uuuuuuuuuuuuuuuuuuu和uuuuuuuu main_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

我知道这很简单,我只是仍在努力学习一切,我知道有人会知道这一点


提前谢谢!我很感激。

我想你已经看到了这样的想法:

if __name__ == "__main__":
    # do something if this script is invoked
    # as python scriptname. Otherwise, gets ignored.
当您在脚本上调用python时,如果该文件是python可执行文件直接调用的文件,则该文件的属性_name__;设置为_main__;。否则,如果不直接调用它,则将其导入

现在,如果需要,您可以在脚本上使用此技巧,例如,假设您有:

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脚本只是你的函数的一个小包装,不管怎样,你的函数现在是自我测试的

然后,您可以使用桌面上的虚构值(远离生产服务器)评测函数


可能有更简洁的方法来实现这一点,但它会起作用。

是的!谢谢你输入的内容只是让cProfile查看脚本函数,对吗?但是,我如何使它查看整个.py文件?正确。我不知道你会怎么做-我要做的是让一个函数完成我需要分析的所有事情,或者在需要分析的每个函数上运行cProfile.run。解释器不应该直接调用脚本。如果你正在这样做,当你在CGI表单中执行脚本时,你将配置文件。是的,我正在从CGI运行脚本。比如说我怎样才能在你不能的情况下得到cProfile输出。据我所知,至少不是直接的。你需要抽象出你想要分析的功能,这样你就可以用另一个脚本将它封装在一些虚拟数据中并进行测试。这容易吗?我可以硬编码这些值,所以我只需要在网站上运行,而不是在我的计算机上运行。