当前位置: 首页 > 面试题库 >

在Python中创建依赖性图

陈正业
2023-03-14
问题内容

我继承了一个巨大的代码库,需要对其进行一些小的更改。我想知道是否有实用程序可以解析python代码并提供函数之间的依赖关系,就像我对函数进行更改一样,我想确保自己不会破坏其他函数,因此,如果我能在图表中看到它,会让我的生活更轻松。


问题答案:
  • 通常,“依赖性”是为模块/包导入定义的。
  • 您正在寻找的是可视化的呼叫流程。

    • http://pycallgraph.slowchop.com/
    • 您仍然不能保证不会破坏功能:)
  • 我的经验和解决方案:

很多时候,我发现呼叫流数据不堪重负,并且图表过于复杂。所以我通常要做的是对该功能感兴趣的跟踪调用流程。

这是通过利用sys.settrace(…)函数完成的。在将调用流生成为文本数据之后,我使用graphviz生成了一个调用图。

* [http://docs.python.org/library/sys.html](http://docs.python.org/library/sys.html)
* [通话追踪](http://pyfunc.blogspot.com/2010/10/tracing-callflows-in-python.html)
* 要生成图,请使用[networkX的](http://networkx.lanl.gov/pygraphviz/)graphviz解决方案。

[编辑:基于评论]

然后,我的零散解决方案会更好。只需插入代码,然后在要跟踪的函数上使用装饰器即可。您会看到延迟出现的差距,但是可以解决。您不会直接获得完整的图片。

我一直在努力做到这一点,并发表了一些关于这种理解的文章。



 类似资料: