如何使用巨大的替换子字符串加速python str.replace()?

时间:2018-08-21 10:59:21

标签: string python-3.x performance replace

我的意图是用base64数据编码的URI(我有〜70个脱机html文件)替换html图像源路径。这是我所拥有的:

html = '<html> ... </html>'
images = {'graphics/blah.png': 'base64 data uri here', ...}    

for image_path in images:
    if image_path in html:
        html = html.replace(image_path, images[image_path])

不幸的是,images[image_path]的字符串确实很长,从〜17k字符到〜500k字符不等,我认为这会大大减慢替换过程。有什么办法,如何加快替换为巨大的子字符串?

到目前为止,我已经尝试过:

html = '<html> ... </html>'
images = {'graphics/blah.png': 'base64 data uri here', ...}    

for image_path in images:
    if image_path in html:
        html = html.split(image_path)
        html = images[image_path].join(html)

但是令我惊讶的是,它大约需要与之前的代码段相同的时间。

我也尝试过re.sub(),结果和multiprocessing.Pool都一样,但是我只有两个内核,这从原来的9.5秒左右的过程改进到了大约8秒,仍然有些改进(用户等待显示的结果页面)

0 个答案:

没有答案