嵌套遥测记录器。

austen的Python项目详细描述


奥斯汀

嵌套遥测记录器。 非常适合打印算法。转储到json文件中。

功能

Austen背后的核心思想是用精确的参数记录算法调用堆栈,这些参数存储在字典中并转储到json。 另外,Austen处理一些附加文件类型的转储。其中包括:

  • 绘图
  • 床单
  • 图像
  • 对象(使用joblib

所有文件都将转储到与算法(每个分支的文件夹)对应的文件夹结构中。

开始

pip install austen

如何使用

手动输入

我们首先从库中导入Logger类。

fromaustenimportLogger

现在我们可以实例化Logger对象。

logger=Logger(output='logs')

通过output参数,可以为后续转储指定基目录。 它将转储到当前工作目录(相对路径)。如果你想把它扔到别的地方,就把绝对路径放进去。现在它将转储到./logs/

现在让我们在日志中添加一些条目。

logger.add_entry('foo','bar')

也可以一次添加多个条目。

entries=[('a',1),('b',2),('c',5)]logger.add_entries(entries)

条目存储在字典中。这意味着密钥必须是散列的。 如果您认为某些内容适合于json格式,只需将其推送到logger。

包装函数调用

让我们记录一些函数。

defadd(x,y):returnx+ydeffoo(logger:Logger,x,y):returnlogger.log_func(func=add,kwargs={'x':x,'y':y})

其他文件类型

现在让我们看看如何转储文件。

图表
logger.save_fig(figure,name='foo')

您的图应该实现来自matplotlibsavefig接口。 它实际上是python中绘图的标准。

  • name-表示文件名。自动处理文件扩展名。
logs/foo.png

withopen('foo.csv')ascsv:frame=pd.read_csv(csv)logger.save_csv(frame,name='foo')

您的框架应该从pandas实现to_csv接口。 我想现在每个人都在用pandas来处理床单。

logs/foo.csv

图像

logger.save_image(image,name='astronaut')logger.save_image(image,name='coffee')

我们使用skimage.io.imsave来处理图像。图像保存为png

logs/astronaut.png
logs/coffee.png
logger.save_image(image,name='astronaut',prefix_step=True)logger.save_image(image,name='coffee',prefix_step=True)

还可以使用prefix_step参数附加一些排序前缀。 现在是时候谈谈steps。它是记录器中的一个私有计数器,每次使用log_func时都会递增。因此,以后在查看文件时,可以按名称排序(这是大多数操作系统的默认设置)。它将产生以下结构:

logs/01_astronaut.png
logs/02_coffee.png

对象

logger.save_obj(logger,name='logger')

使用joblib序列化对象。

是时候疯狂一点了(筑巢)

withLogger(logs_dir)aslogger:logger.add_entry('x',0)withlogger.get_child('bar')aschild_logger:child_logger.add_entry('y',1)

您可以使用get_child方法嵌套记录器。我们建议你用示波器包装你的伐木工人,这样他们更容易管理。

  • 一旦记录器被释放,它将合并到父记录器。
  • 一旦根日志被释放,它将把所有遥测数据转储到json文件中

另一个技巧是以“每个分支的作用域”的方式编写代码——您只使用单一的方法,而只使用单一的记录器。您可以传递带参数的父记录器。

作者

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
运行ClassSpy java时发生反射错误   java Android ContextWrapper fileList()看不到我的文件   java使用JAXWS构建大型MTOM/XOP消息   eclipse如何使用ACM库(控制台程序)编写Java程序?   java m2eclipse插件搜索在配置为Nexus时不会给出结果   java Scanner只识别文本文件中的某些行,而不识别其他行   java如何从smartwatch启动活动或服务   java检查数组是否至少有两个具有特定值的元素   JAVA网URL编码器/解码器替代方案   Java中通过引用传递对象   spring如何在使用JavaJSON修补程序进行修补时禁止更新字段   使用java将海量数据存储到mysql的最佳方法   java字符串作为不可变对象   java我无法访问tomcat服务器(localhost),甚至无法访问mysql   java While循环条件未给出预期结果   java如何启动传递图像uri的新活动   Java中类定义在方法中的使用   Java程序在Ubuntu中运行我的另一个程序