环境: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!!!