当对多个文件进行同样的预处理时,为了加快处理速度会使用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的数据。

解决方法

基于上述分析,可以尝试以下几种解决方法

  1. 将每个进程结果写入文件,最后汇总处理,这样避免进程间大量数据传递
  2. 代码中检查Python版本,低于3.8时候不使用多进程。
  3. 使用dask dataframe等Python并行处理库

参考文献

python struct.error: ‘i’ format requires -2147483648 <= number <= 2147483647

Python多进程 struct.error: ‘i‘ format相关推荐

  1. struct.error: 'h' format requires -32768 number 32767

    参考:https://blog.csdn.net/weiwangchao_/article/details/80395941 struct.error: 'h' format requires -32 ...

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

    环境:ubuntu python3.6 在多进程之间交换(传递)大量数据时报错. 报错: Traceback (most recent call last):   File "/usr/li ...

  3. struct.error: ushort format requires 0 <= number <= 0xffff

    这个问题是python struct 转bytes 的时候 下面的就会报错 import struct print(struct.pack("H",65536)) H 的取值范围是 ...

  4. python 网络编程 struct解包时报错 struct.error: unpack requires a buffer of 4 bytes

    报错信息 D:\Donta_tensorflow-yolov3\python\python.exe D:/10_gitee/network_programming/避障程序信号及图像接收端/20100 ...

  5. 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:/ ...

  6. Python 多进程 multiprocessing 使用示例

    参考:http://blog.csdn.net/qdx411324962/article/details/46810421 参考:http://www.lxway.com/4488626156.htm ...

  7. python多进程详解

    目录 python多进程 序.multiprocessing 一.Process process介绍 例1.1:创建函数并将其作为单个进程 例1.2:创建函数并将其作为多个进程 例1.3:将进程定义为 ...

  8. 取代Python多进程!伯克利开源分布式框架Ray

    Ray由伯克利开源,是一个用于并行计算和分布式Python开发的开源项目.本文将介绍如何使用Ray轻松构建可从笔记本电脑扩展到大型集群的应用程序. 并行和分布式计算是现代应用程序的主要内容.我们需要利 ...

  9. python 多进程异常处理

    前言 最近项目用到了Python作为网站的前端,使用的框架是基于线程池的Cherrypy,但是前端依然有一些比较'重'的模块.由于python的多线程无法很好的利用多核的性质,所以觉得把这些比较'重' ...

  10. Python使用struct处理二进制

    有的时候需要用python处理二进制数据,比如,存取文件,socket操作时.这时候,可以使用python的struct模块来完成.可以用 struct来处理c语言中的结构体. struct模块中最重 ...

最新文章

  1. (一)win7下cocos2d-x 21 + vs2010
  2. 函数参数 不定参数,和 默认参数
  3. 推荐一个以动画效果显示github提交记录的黑科技工具:Gource
  4. google+stackoverflow_哪些开发问题最让程序员“头秃”?我们分析了Stack Overflow的11000个问题...
  5. 2017西安交大ACM小学期 神器插座 KMP匹配
  6. [转载] Java对返回值的封装
  7. Hadoop DataNode : Address already in use
  8. css 修改占位符(placeholder)默认颜色、字体
  9. 数据库事务复制(读写分离)设计的一点经验
  10. Apache搭建http网站服务器问题记录
  11. JAVA描述汽车喇叭_描写车声音的词语
  12. 后台管理系统架构成型
  13. 股票大作手杰西·利弗莫尔语录集锦
  14. coffeescript html5,CoffeeScript入门
  15. 如何保存卡住的wps_wps卡住了怎么强制退出
  16. 程序员每日英语2021-08-25
  17. 一周新闻纵览:工信部组织召开综合整治骚扰电话专项行动;智能锁百万指纹泄密;4G不会降速5G网速会更快
  18. MSSQL日期按星期几汇总排序
  19. 小清丽微距花卉拍摄示范
  20. 米小圈上学记这本书太烂了

热门文章

  1. 日常食物软分类与烹饪方法的思考——预防肥胖
  2. 52_LSTM及简介,RNN单元的内部结构,LSTM单元的内部结构,原理,遗忘门,输入门,输出门,LSTM变体GRU,LSTM变体FC-LSTM,Pytorch LSTM API介绍,案例(学习笔记)
  3. CCF“信息检索”的前沿讲座
  4. 类似Wordpress的建站系统
  5. [浏览器插件]经典书签同步工具xmarks与chrome自带同步功能比较
  6. cocoa-CoreData
  7. CSDN学院 免费技术答疑公开课,本周六场即将开播~~~
  8. FLV格式的视频怎么在线转换成MP4格式
  9. selenium结合sikuliX操作Flash网页
  10. java做抽奖系统怎么搞_JAVA 随机抽奖系统 实现教程及代码