gpt4 book ai didi

python - 如何根据内容将大文件(5GB)分割成小文件?

转载 作者:太空宇宙 更新时间:2023-11-03 21:26:02 24 4
gpt4 key购买 nike

我有 100 个大文件,每个文件大约 5GB。我需要根据其内容将它们分成文件。大文件有很多行,每一行都是这样

{"task_op_id": 143677789, "task_op_time": 1530927931, "task_op_tag": 1, "create_time": 1530923701, "status": 2}

我需要根据task_op_id分割内容,每个大文件有350个不同的task_op_id,因此每个大文件应该生成350个不同的小文件,每个小文件都有相同的task_op_id内容。

我尝试过的方法是:

def split_to_id_file(original_file):
destination_file = 'processed_data2/data_over_one_id/break_into_ids/'
with open(original_file) as f1:
for line in f1:
data_dict = json.loads(line)
task_op_id = data_dict['task_op_id']
with open(destination_file+str(task_op_id), 'a+') as f2:
json.dump(data_dict, f2, ensure_ascii=False)
f2.write('\n')
# multiprocessing with pool
def multiprocessing_pool(workers_number, job, files_list):
p = Pool(workers_number)
p.map(job, files_list)


def main():
input_path = 'processed_data2/data_over_one_id'
files_list = [join(input_path, f) for f in listdir(input_path)
if isfile(join(input_path, f))
and join(input_path, f).split('/')[-1].startswith('uegaudit')]
multiprocessing_pool(80, split_to_id_file, files_list)


if __name__ == '__main__':
main()

但速度太慢,处理10GB数据需要2小时。

那么有没有更好的方法来处理数据呢?

非常感谢您的帮助。

最佳答案

我推测主要耗时过程是文件 IO 操作。你能分解一下运行时间并检查一下吗?

另一个原因可能是 JSON 解析器。查看this线程以获取更多信息。

关于python - 如何根据内容将大文件(5GB)分割成小文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53833336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com