即使在使用cProfile时,我也想获得模块(列出所有函数名)。我怎么能这么做?
为了澄清,我在我自己的模块中使用了一些内省,但是sys.modules[__main__]在使用-m cProfile运行时当然不再返回我自己的模块。
若要复制,请创建modtest.py:
#!/usr/bin/env python3
import sys
print(sys.modules[__name__])按如下方式运行:
$ ./modtest.py
<module '__main__' from './modtest.py'>
$ python -m cProfile ./modtest.py
<module 'cProfile' from '...cProfile.py'>我怎么才能把最后一行说成from './modtest.py'
发布于 2017-02-17 14:15:11
当您将模块作为参数提供给sys.modules时,您将无法从cProfile获取模块对象。cProfile甚至不为您导入模块,它只是执行它,在它完成执行之后,您甚至无法从sys.modules获取它。
当通过-m开关运行时,__main__必然指向cProfile,这是没有改变的。
您可以从sys.argv[0]获取模块名,使用importlib自己导入它,然后列出函数名。
https://stackoverflow.com/questions/42299533
复制相似问题