使用多重处理来加快googletrans的使用

时间:2018-09-15 12:13:51

标签: python-3.x

我有数百万个字符串要从中文翻译成英文。它们存储在data = {"1432": "普萘洛尔", "1433: "地西泮", "1434": "苯妥英钠", '1435': "阿昔洛韦"}之类的Python字典中。这本词典的关键字是术语id,其值是中文的药品名称。我的目标是将这些药品名称翻译成英文,且其ID保持不变。我需要将结果写入txt文件。

我用来完成Google翻译的功能。

from googletrans import Translator
def trans(src_dict):
    tgt_dict_txt = open("tgt_dict.txt","w")
    sent_counter = 0
    global k, v
    for k, v in src_dict.items():
        translator = Translator()
        translations = translator.translate(v, src="zh-CN", dest="en")
        trans = translations.text
        print(trans)
        tgt_dict_txt.write(k + "|||" + trans + "\n")
        sent_counter = sent_counter + 1
        print(str(k) + ' updated, so far: ' + str(sent_counter))
    tgt_dict_txt.close()

鉴于我需要翻译大量的字符串,我正在考虑使用python Multiprocessing池来加快此过程。我尝试过:

from multiprocessing import Pool
with Pool(5) as p:
    p.map(trans, data)
print("DONE!")

但是,没有任何内容写入"tgt_dict.txt",并且Jupyter Notebook中的多处理部分从未执行完。我该如何更正我的代码?

0 个答案:

没有答案