Python多进程 struct.error: ‘i‘ format
当对多个文件进行同样的预处理时,为了加快处理速度会使用Python多进程。每个进程返回数据给父进程,做最后的合并处理。
问题描述与分析
代码在处理大文件时候会抛出如下错误,但当处理的文件较小时候,一切正常。
concurrent.futures.process._RemoteTraceback:
"""
Traceback (most recent call last):File "/home/dxi/software/python3.7.9/lib/python3.7/concurrent/futures/process.py", line 205, in _sendback_resultexception=exception))File "/home/dxi/software/python3.7.9/lib/python3.7/multiprocessing/queues.py", line 364, in putself._writer.send_bytes(obj)File "/home/dxi/software/python3.7.9/lib/python3.7/multiprocessing/connection.py", line 200, in send_bytesself._send_bytes(m[offset:offset + size])File "/home/dxi/software/python3.7.9/lib/python3.7/multiprocessing/connection.py", line 393, in _send_bytesheader = struct.pack("!i", n)
struct.error: 'i' format requires -2147483648 <= number <= 2147483647
多进程时候,进程间数据交换是通过pickling,因为处理的文本都比较大,当数据pickled时候超过了i struct的限制,-2147483648 <= number <= 2147483647
Python3.8中在非windows平台修复了这个问题,可以支持最大4EB的数据。
解决方法
基于上述分析,可以尝试以下几种解决方法
- 将每个进程结果写入文件,最后汇总处理,这样避免进程间大量数据传递
- 代码中检查Python版本,低于3.8时候不使用多进程。
- 使用dask dataframe等Python并行处理库
参考文献
python struct.error: ‘i’ format requires -2147483648 <= number <= 2147483647
Python多进程 struct.error: ‘i‘ format相关推荐
- struct.error: 'h' format requires -32768 number 32767
参考:https://blog.csdn.net/weiwangchao_/article/details/80395941 struct.error: 'h' format requires -32 ...
- header = struct.pack(!i, n) struct.error: 'i' format requires -2147483648 number 2147483647
环境:ubuntu python3.6 在多进程之间交换(传递)大量数据时报错. 报错: Traceback (most recent call last): File "/usr/li ...
- struct.error: ushort format requires 0 <= number <= 0xffff
这个问题是python struct 转bytes 的时候 下面的就会报错 import struct print(struct.pack("H",65536)) H 的取值范围是 ...
- python 网络编程 struct解包时报错 struct.error: unpack requires a buffer of 4 bytes
报错信息 D:\Donta_tensorflow-yolov3\python\python.exe D:/10_gitee/network_programming/避障程序信号及图像接收端/20100 ...
- 7.python wave.Error: unknown format: 65534 声音文件可以播放python读取不了
# @File :sound_cut.py # @Author: Wang Zhimin # @Date : 2019/10/12 import wave r= wave.open("D:/ ...
- Python 多进程 multiprocessing 使用示例
参考:http://blog.csdn.net/qdx411324962/article/details/46810421 参考:http://www.lxway.com/4488626156.htm ...
- python多进程详解
目录 python多进程 序.multiprocessing 一.Process process介绍 例1.1:创建函数并将其作为单个进程 例1.2:创建函数并将其作为多个进程 例1.3:将进程定义为 ...
- 取代Python多进程!伯克利开源分布式框架Ray
Ray由伯克利开源,是一个用于并行计算和分布式Python开发的开源项目.本文将介绍如何使用Ray轻松构建可从笔记本电脑扩展到大型集群的应用程序. 并行和分布式计算是现代应用程序的主要内容.我们需要利 ...
- python 多进程异常处理
前言 最近项目用到了Python作为网站的前端,使用的框架是基于线程池的Cherrypy,但是前端依然有一些比较'重'的模块.由于python的多线程无法很好的利用多核的性质,所以觉得把这些比较'重' ...
- Python使用struct处理二进制
有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重 ...
最新文章
- (一)win7下cocos2d-x 21 + vs2010
- 函数参数 不定参数,和 默认参数
- 推荐一个以动画效果显示github提交记录的黑科技工具:Gource
- google+stackoverflow_哪些开发问题最让程序员“头秃”?我们分析了Stack Overflow的11000个问题...
- 2017西安交大ACM小学期 神器插座 KMP匹配
- [转载] Java对返回值的封装
- Hadoop DataNode : Address already in use
- css 修改占位符(placeholder)默认颜色、字体
- 数据库事务复制(读写分离)设计的一点经验
- Apache搭建http网站服务器问题记录
- JAVA描述汽车喇叭_描写车声音的词语
- 后台管理系统架构成型
- 股票大作手杰西·利弗莫尔语录集锦
- coffeescript html5,CoffeeScript入门
- 如何保存卡住的wps_wps卡住了怎么强制退出
- 程序员每日英语2021-08-25
- 一周新闻纵览:工信部组织召开综合整治骚扰电话专项行动;智能锁百万指纹泄密;4G不会降速5G网速会更快
- MSSQL日期按星期几汇总排序
- 小清丽微距花卉拍摄示范
- 米小圈上学记这本书太烂了
热门文章
- 日常食物软分类与烹饪方法的思考——预防肥胖
- 52_LSTM及简介,RNN单元的内部结构,LSTM单元的内部结构,原理,遗忘门,输入门,输出门,LSTM变体GRU,LSTM变体FC-LSTM,Pytorch LSTM API介绍,案例(学习笔记)
- CCF“信息检索”的前沿讲座
- 类似Wordpress的建站系统
- [浏览器插件]经典书签同步工具xmarks与chrome自带同步功能比较
- cocoa-CoreData
- CSDN学院 免费技术答疑公开课,本周六场即将开播~~~
- FLV格式的视频怎么在线转换成MP4格式
- selenium结合sikuliX操作Flash网页
- java做抽奖系统怎么搞_JAVA 随机抽奖系统 实现教程及代码