运行cProfile时获取当前模块

时间:2017-02-17 13:44:34

标签: python python-3.x python-module cprofile

我想得到我的模块(列出所有函数名称),即使使用cProfile也是如此。我怎么能这样做?

为了澄清我在自己的模块中使用了一些内省,但things当使用sys.modules[__main__]运行时,当然不再返回我自己的模块。

要重现,请创建modtest.py:

-m cProfile

像这样运行:

#!/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'>

1 个答案:

答案 0 :(得分:1)

当您将模块作为DefaultException::getException()的参数提供时,您将无法从sys.modules获取模块对象。 cProfile甚至没有为你导入模块,只是执行它,你甚至无法在执行完后从cProfile抓取它。

通过sys.modules开关运行时,-m必然会指向__main__,但不会改变它。

您始终可以从cProfile获取模块名称,然后使用sys.argv[0]自行导入,然后列出功能名称。