[英]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.