chrome trace格式中的简单分析
项目描述
keke
该项目是一个为Python设计的极其简单的trace-event写入器。
您可以在Perfetto或chrome的about:tracing
中读取跟踪。这仅写入在两者中都有效的一致方言,并且足够小巧,足以在将来可能需要跟踪的情况下进行销售。
如果您的需求更像是一个行分析器,您可能需要pytracing(略有废弃,git版本在py3中可以工作)或viztracer(由于大小原因不适用于在其他项目中销售,但积极维护)。
我在编写这个时受到了两者的启发。
简单示例
from __future__ import annotations # for IO[str]
from typing import IO, Optional
import time
import click
@click.command()
@click.option("--trace", type=click.File(mode="w"), help="Trace output filename")
@click.option("--foo", help="This value gets logged")
def main(trace: Optional[IO[str]], foo: Optional[str]) -> None:
with keke.TraceOutput(file=trace):
with kev("main", __name__, foo=foo):
sub()
def sub():
with kev("sub1", __name__):
time.sleep(1)
with kev("sub2", __name__):
time.sleep(2)
开销
当未启用时非常接近零。
最简单的不启用方法是调用TraceOutput(file=None)
,这将不会做任何事情。
进程,或“如何实现分布式跟踪”
这种方法避免了所有魔法。
如果您正在调用另一个(跟踪感知)程序,那么最简单的事情就是想出一个独特的名称,并将其传递给子进程的argv,然后在完成时尝试自己合并它。
如果您正在做类似fork/spawn的事情来继续Python工作,那么父进程可以控制基本信息(如要写入的tmpdir),而子进程可以打开一个带有其pid的唯一文件。
如果您正在做更分布式的事情,您可能需要想出一个guid并将其传递给子进程,以便子进程为以后的日志上传标记它。
关于名称的事
我试图想出一个简短、易于记忆的名称,并且一些渲染的跟踪点非常尖锐,这让我想起了“bouba/kiki效应”。名称“kiki”已被占用,但“keke”未被占用。
许可
keke 版权归 Tim Hatch 所有,并受 MIT 许可证的许可。我在此存储库中向您提供开源许可证下的代码。这是我的个人存储库;您从我这里获得的代码许可证来自我,而不是来自我的雇主。有关详细信息,请参阅 LICENSE
文件。
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
构建分发
keke-0.1.4.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a8653b7d9936ddae08d1ea2c298e5e36a50eb379705e3f74ab08b1f6ae3831a0 |
|
MD5 | 25c504220b1535bc84d6c8a9d4c70f54 |
|
BLAKE2b-256 | 7f9a3ccba0035eb9a92af133c896b18b32cc9195b5738bbc21dcbb58db056b41 |
keke-0.1.4-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b16eb1f8dd768747cf55e9e272a02fc642a4a80718ff4feccb5cdcdf9290af0a |
|
MD5 | 644a53e9c000ef0bc6c831ee8b5b0513 |
|
BLAKE2b-256 | e3e90c70d5501b667988c4a340a2fc6006a58491a874f5aa1da56d0757e6336a |