combine_traces.py

多文件JSON轨迹合并
#!/usr/bin/env python3
"""Combine JSON from multiple -ftime-traces into one.

Run with (e.g.): python combine_traces.py foo.json bar.json.
"""

 
import json
import sys
 

if __name__ == '__main__':

    start_time = 0
    combined_data = []
    for filename in sys.argv[1:]:
        with open(filename, 'r') as f:
            file_time = None
            for event in json.load(f)['traceEvents']:
                # Skip metadata events
                # Skip total events
                # Filter out shorter events to reduce data size
                if event['ph'] == 'M' or \
                    event['name'].startswith('Total') or \
                    event['dur'] < 5000:
                    continue

                if event['name'] == 'ExecuteCompiler':
                    # Find how long this compilation takes
                    file_time = event['dur']
                    # Set the file name in ExecuteCompiler
                    event['args']['detail'] = filename
 
                # Offset start time to make compiles sequential
                event['ts'] += start_time

                # Add data to combined
                combined_data.append(event)

            # Increase the start time for the next file
            # Add 1 to avoid issues with simultaneous events
            start_time += file_time + 1

    with open('combined.json', 'w') as f:
        json.dump({'traceEvents': sorted(combined_data, key=lambda k: k['ts'])}, f)
### 合并子数据集的方法 要通过 Python 脚本 `combine_sub_data.py` 来处理路径下的子数据集,可以按照以下方法操作: #### 使用命令行调用脚本 假设该脚本支持接收参数来指定输入文件夹的位置,则可以通过如下方式执行: ```bash python3 combine_sub_data.py --sub_datasets_path datasets_2025/ ``` 此命令会传递参数给脚本中的解析器模块[^1]。 #### 修改脚本以适应需求 如果尚未实现命令行参数功能,可以在脚本内部手动设置变量或者扩展其功能。以下是可能的代码片段用于解释如何读取和合并多个子数据集的内容: ```python import os import argparse def merge_datasets(sub_datasets_path, output_file="merged_dataset.csv"): all_data = [] # 遍历目录下所有的CSV文件 for filename in os.listdir(sub_datasets_path): if filename.endswith(".csv"): file_path = os.path.join(sub_datasets_path, filename) with open(file_path, 'r') as f: data = f.readlines()[1:] # 去除表头部分 all_data.extend(data) # 将所有数据写入到一个新的文件中 with open(output_file, 'w') as out_f: out_f.write("header_column_a,header_column_b\n") # 添加新表头 out_f.writelines(all_data) if __name__ == "__main__": parser = argparse.ArgumentParser(description='Merge sub-datasets into one.') parser.add_argument('--sub_datasets_path', type=str, required=True, help='Path to the folder containing sub-datasets') args = parser.parse_args() merge_datasets(args.sub_datasets_path) ``` 上述代码展示了如何遍历特定路径下的 CSV 文件并将它们的数据合并成单个文件[^2]。 #### 参数说明 - **--sub_datasets_path**: 这是一个必需的参数,表示存储子数据集的文件夹位置。 - 输出默认保存为当前工作目录下的 `merged_dataset.csv` 文件。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值