【发布时间】:2021-09-02 15:30:17
【问题描述】:
有没有加快处理速度的方法?
我必须在每个约 126k 样本上翻译三个文本字段。此任务的预计时间超过 96 小时:
import pickle
from deep_translator import GoogleTranslator
from tqdm import tqdm
def translate(text):
return GoogleTranslator(
source='english',
target='portuguese').translate(text)
def translate_samples(samples):
translated_sample = []
for sample in tqdm(samples):
translated_sample.append({
"idx": sample["idx"],
"qs1": translate(sample["qs1"]),
"qs2": translate(sample["qs2"]),
"ans": translate(sample["ans"]),
"cls":sample["cls"]
})
return translated_sample
def perform_tasks():
with open("resource/dataset/aug.pkl", "rb") as samples_file:
samples = pickle.load(samples_file)
translated_sample = translate_samples(samples)
with open("resource/dataset/aug_pt_br.pkl", "wb") as samples_file:
pickle.dump(translated_sample, samples_file)
if __name__ == '__main__':
perform_tasks()
# 0%| | 36/126738 [00:36<96:12:38, 2.14s/it]
你能给我一些指示吗?
【问题讨论】:
-
您的任务是 IO 密集型的,线程或异步等并发方法有助于加快进程。
-
aiohttp 是一个很棒的库,可以帮助您开始处理异步 Web 请求!您将无法直接使用
deep_translator库,但应该能够相对轻松地重写core parts。顺便说一句,请注意,在完成这么多样本的翻译之前,您可能会被谷歌屏蔽,您应该考虑购买 API 密钥。
标签: python parallel-processing google-translate