繁体   English   中英

大规模连接 Python 中的字符串

[英]Concatenating strings in Python at large scale

假设我有大量词典(200 万本词典)。 我基本上需要将每个字典的json.dumps()转换为一个巨大的字符串(以放入对 AWS OpenSearch 的请求的正文中)。 到目前为止我有这个:

json_data = ''
action = {'index': {}}
for item in data:
    json_data += f'{json.dumps(action)}\n'
    json_data += f'{json.dumps(item)}\n'

其中data是大字典。 这平均需要 0.9 到 1 秒。 有没有更有效的方法来做到这一点?

其他 SO 问题的结论是,如果这是一个必须完成一次的简单字符串加法,那么执行c = a + b是最快的方法,但是,我必须继续追加到本例中的c 我必须多次重复此操作,因此加快速度将非常有帮助。 有没有办法加快这个 function 的速度,如果可以,这些优化会是什么样子?

重复的字符串连接很慢 更好的方法是建立一个字符串列表,然后在最后加入它们。 我无权访问您的数据,所以我无法对此进行测试,但您会按照以下方式进行操作:

json_data = []
action = {'index': {}}
for item in data:
    json_data.append(action)
    json_data.append(item)
result = '\n'.join([json.dumps(blob) for blob in json_data])

变化...

import json
json_data = []
action = json.dumps({'index': {}}) # dumps is only called on this once
for item in data:
    # json_data will be a list of strings
    json_data.append(action)
    json_data.append(json.dumps(item))
result = '\n'.join(json_data)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM