zwPython.com研习社

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2210|回复: 0

AI量化的py函数调用图工具:pycallgraph

[复制链接]

233

主题

240

帖子

5511

积分

超级版主

Rank: 8Rank: 8

积分
5511
发表于 2020-8-5 11:01:09 | 显示全部楼层 |阅读模式
AI量化的py函数调用图工具:pycallgraph 2019年5月11日  zw
AI量化的py函数调用图工具:pycallgraph
对于初学者而言,函数调用图工具,可以工具源码,自动生成函数的运行流程,以及调用关系。
大大降低学习拿督,快速把握程序逻辑。
大部分从事大数据、金融量化的一线人员,都不是专业程序员,这类工具,可以节约大量的时间成本。
在TopQuant.vip极宽网站的网盘,以及QQ群文件中有一个小软件,即 Python流程图绘制软件 CODINGRAPH。
使用该软件,拷贝py代码就可以自动绘制流程图,对其他编程语言也适用。
下面介绍的 pycallgraph ,属于内置式的函数调用图工具,更加专业。
pycallgraph被称为python代码工具的神器,通过图形方式,追踪函数的相互调用的情况。
以下是工具Top极宽《backtrader课件-F系列》,第一个案例btr001,生成的函数调用图:
课件目录参见:http://www.topquant.vip/btr-f2019.htm
由上图可以看出,如果说 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()


【极宽QQ群】
群号:1057170501 ,zwPython.com学习QQ群,面向py初学者和大众小白用户。
群号:124134140,TOP极宽金融量化,三千人超大QQ群,面向专业金融实盘用户。
群号:699266891,TFB极宽足球大数据QQ群
群号:790548107,FASTAI智能量化QQ群。
【微信公众号】
请大家关注TOP极宽量化公众号,大量原创Python量化技术
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|zwPython.com研习社

GMT+8, 2023-6-3 00:05 , Processed in 0.022585 second(s), 4 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表