googletrans Translate() 不适用于 Spyder,但适用于 Colab

2024-03-19

我正在本地存储库中的离线数据上使用 googletrans 翻译器:

translator = Translator()
translations = []
for element in df['myText']:
    translations.append(translator.translate(element).text)
df['translations'] = translations

在 Google Colab 上它工作正常(20 分钟),但在我的机器上需要 30 分钟并因 ReadTimeout 错误而停止:

  File "<ipython-input-9-2209313a9a78>", line 4, in <module>
    translations.append(translator.translate(element).text)

  File "C:\Anaconda3\lib\site-packages\googletrans\client.py", line 182, in translate
    data = self._translate(text, dest, src, kwargs)

  File "C:\Anaconda3\lib\site-packages\googletrans\client.py", line 83, in _translate
    r = self.client.get(url, params=params)

  File "C:\Anaconda3\lib\site-packages\httpx\_client.py", line 763, in get
    timeout=timeout,

  File "C:\Anaconda3\lib\site-packages\httpx\_client.py", line 601, in request
    request, auth=auth, allow_redirects=allow_redirects, timeout=timeout,

  File "C:\Anaconda3\lib\site-packages\httpx\_client.py", line 621, in send
    request, auth=auth, timeout=timeout, allow_redirects=allow_redirects,

  File "C:\Anaconda3\lib\site-packages\httpx\_client.py", line 648, in send_handling_redirects
    request, auth=auth, timeout=timeout, history=history

  File "C:\Anaconda3\lib\site-packages\httpx\_client.py", line 684, in send_handling_auth
    response = self.send_single_request(request, timeout)

  File "C:\Anaconda3\lib\site-packages\httpx\_client.py", line 719, in send_single_request
    timeout=timeout.as_dict(),

  File "C:\Anaconda3\lib\site-packages\httpcore\_sync\connection_pool.py", line 153, in request
    method, url, headers=headers, stream=stream, timeout=timeout

  File "C:\Anaconda3\lib\site-packages\httpcore\_sync\connection.py", line 78, in request
    return self.connection.request(method, url, headers, stream, timeout)

  File "C:\Anaconda3\lib\site-packages\httpcore\_sync\http11.py", line 62, in request
    ) = self._receive_response(timeout)

  File "C:\Anaconda3\lib\site-packages\httpcore\_sync\http11.py", line 115, in _receive_response
    event = self._receive_event(timeout)

  File "C:\Anaconda3\lib\site-packages\httpcore\_sync\http11.py", line 145, in _receive_event
    data = self.socket.read(self.READ_NUM_BYTES, timeout)

  File "C:\Anaconda3\lib\site-packages\httpcore\_backends\sync.py", line 62, in read
    return self.sock.recv(n)

  File "C:\Anaconda3\lib\contextlib.py", line 130, in __exit__
    self.gen.throw(type, value, traceback)

  File "C:\Anaconda3\lib\site-packages\httpcore\_exceptions.py", line 12, in map_exceptions
    raise to_exc(exc) from None

ReadTimeout: The read operation timed out

我的机器:16 GB RAM(i5 + NVIDIA); 谷歌 Colab 内存:0.87 GB/12.72 GB

# Data Size
len(df) : 1800

不确定为什么它不能在我的本地计算机上运行?我之前曾处理过较重的数据集。 我正在使用 Python 3 (Spyder 4.0)。


我在翻译时也遇到了一些问题...看来您遇到的错误与您的机器无关,而是与 API 请求超时有关。尝试并通过Timeout对象从httpx图书馆到Translator建设者。像这样的东西:

import httpx
timeout = httpx.Timeout(5) # 5 seconds timeout
translator = Translator(timeout=timeout)

如果需要,您可以将 5 更改为其他值。到目前为止,它已经为我解决了问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

googletrans Translate() 不适用于 Spyder,但适用于 Colab 的相关文章

随机推荐