AI量化的py函数调用图工具:pycallgraph
对于初学者而言,函数调用图工具,可以工具源码,自动生成函数的运行流程,以及调用关系。
大大降低学习拿督,快速把握程序逻辑。
大部分从事大数据、金融量化的一线人员,都不是专业程序员,这类工具,可以节约大量的时间成本。
在TopQuant.vip极宽网站的网盘,以及QQ群文件中有一个小软件,即 Python流程图绘制软件 CODINGRAPH。
使用该软件,拷贝py代码就可以自动绘制流程图,对其他编程语言也适用。
由上图可以看出,如果说 pycallgraph 的缺点,就是生成的函数调用图,太过详细,连不同模块,底层函数class类定义的init初始化函数,都有节点图。
不过pycallgraph绘制的函数调用图,深度和节点,是可以通过参数控制的,这个请大家参看pycallgraph的相关文档。
zw测试了n多类似的工具,大部分都是采用外部调用,或者生成web结果数据,使用相对繁琐。
pycallgraph,属于少见的内置式辅助工具,使用非常简单:
通常只需两个步骤:
#1,import导入pycallgraph模块库
from pycallgraph import PyCallGraph
from pycallgraph.output import GraphvizOutput
#2,设置参数,和需要调试的代码
graphviz = GraphvizOutput()
graphviz.output_file = ‘tmp/btr001.png’
#
with PyCallGraph(output=graphviz):
code-to-do(需要调试代码)
code-to-do,是用户需要调试代码,可以整理为一个函数,也可以是段代码块block
以下是 本blog采用的案例课件btr001.py,对应的调试版本:
from pycallgraph import PyCallGraph
from pycallgraph.output import GraphvizOutput
#----------------------
graphviz = GraphvizOutput()
graphviz.output_file = 'tmp/btr001.png'
with PyCallGraph(output=graphviz):
#1.1
rs0='data/' #rs0='/TQData/'
rsyb0,rbas0=rs0+'stk/',rs0+'inx/'
syblst=['002046']
#baslst=['000001'] #上证
tim0str,tim9str='2018-01-01','2018-12-31'
#1.2
qx=tq.tq_init('f01',tim0str=tim0str,tim9str=tim9str)
#
tq.pools_get4flst(qx,rsyb0,syblst,fgInx=False,fgXed=True)
#tq.pools_get4flst(qx,rbas0,baslst,fgInx=True,fgXed=True)
#
#---------
#2
qx=tq.bt_set(qx,tq.log_nor)
#
#3
qx.cb.addstrategy(tqedu.ma)
#
qx.bt_results= qx.cb.run()
#
#4.1
ds=tq.bt_anz(qx)
print('\n@ds\n',ds)
#4.2
qx.cb.plot()