首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行cProfile时获取当前模块

运行cProfile时获取当前模块
EN

Stack Overflow用户
提问于 2017-02-17 13:44:33
回答 1查看 63关注 0票数 0

即使在使用cProfile时,我也想获得模块(列出所有函数名)。我怎么能这么做?

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

若要复制,请创建modtest.py:

代码语言:javascript
复制
#!/usr/bin/env python3
import sys
print(sys.modules[__name__])

按如下方式运行:

代码语言:javascript
复制
$ ./modtest.py
<module '__main__' from './modtest.py'>
$ python -m cProfile ./modtest.py
<module 'cProfile' from '...cProfile.py'>

我怎么才能把最后一行说成from './modtest.py'

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-17 14:15:11

当您将模块作为参数提供给sys.modules时,您将无法从cProfile获取模块对象。cProfile甚至不为您导入模块,它只是执行它,在它完成执行之后,您甚至无法从sys.modules获取它。

当通过-m开关运行时,__main__必然指向cProfile,这是没有改变的。

您可以从sys.argv[0]获取模块名,使用importlib自己导入它,然后列出函数名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42299533

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档