当前位置: 代码迷 >> 综合 >> header = struct.pack(!i, n) struct.error: 'i' format requires -2147483648 number 2147483647
  详细解决方案

header = struct.pack(!i, n) struct.error: 'i' format requires -2147483648 number 2147483647

热度:43   发布时间:2023-12-15 17:06:01.0

环境:ubuntu python3.6 在多进程之间交换(传递)大量数据时报错。

 

报错:

Traceback (most recent call last):
  File "/usr/lib/python3.6/multiprocessing/queues.py", line 240, in _feed
    send_bytes(obj)
  File "/usr/lib/python3.6/multiprocessing/connection.py", line 200, in send_bytes
    self._send_bytes(m[offset:offset + size])
  File "/usr/lib/python3.6/multiprocessing/connection.py", line 393, in _send_bytes
    header = struct.pack("!i", n)
struct.error: 'i' format requires -2147483648 <= number <= 2147483647

 

根据stackoverflow,原因可能是multprocessing.Queue中发送的数据过大

解决:升级到python3.8或者更高版本试试吧,应该解决了这个问题

临时的暴力解决方法:

去这里下载connection.py,然后复制到 /usr/lib/python3.6/multiprocessing/ 目录下,替换原来的connection.py,再重新运行你的程序即可。

 

 

在此非常感谢Alex!!!

  相关解决方案