假设我有一个庞大的字典列表(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
的内容。我必须重复这个操作很多次,所以加快这个速度会非常有帮助。是否有一种方法可以加速这个函数,如果有的话,这些优化是什么样的?
重复字符串连接速度较慢。更好的方法是建立一个字符串列表,然后在最后将它们连接起来。我没有访问您的数据的权限,所以我不能测试这个,但是您可能会选择以下内容:
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)