import multiprocessing
import random
import time
import datetime
import struct
import os import getFile # 76(28) + (2048 + 16) * 512 + 4 frame_flag_0 = 0x0000000000000001 # 8 byte
frame_flag_1 = 0x0000000000000002 # 8 byte
frame_flag_2 = 0x0000000000000003 # 8 byte
frame_flag_9 = 0x00000001 # 4 byte dir_name = 'Z:/'
file_out = 'Z:/312.dat' def producer(pipe):
print('start time: ' + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
linestr = getFile.getFileList(dir_name, '_312_') for i in range(0, len(linestr)):
file_in = linestr[i]
f_in = open(file_in, 'rb')
f_in.seek(109)
while True:
buff = f_in.read(9)
buff = f_in.read(1792)
if buff:
pipe.send_bytes(buff)
else:
f_in.close()
break pipe.close() def consumer(pipe):
f_out = open(file_out, 'xb')
mm = 0
while True:
try: item = pipe.recv_bytes(1792)
if item:
if mm % 512 == 0: # 开始的首帧
f_out.write(struct.pack('>3Q', frame_flag_0, frame_flag_1, frame_flag_2))
f_out.write(struct.pack('>I', frame_flag_9))
f_out.write(item)
f_out.write(struct.pack('>I', 0x00000000) * 68) # 272 byte : 2048 - (896*2) + 16
mm = 0
elif mm % 512 == 511: # 结尾的结束帧
f_out.write(item)
f_out.write(struct.pack('>I', 0x00000000) * 68) # 272 byte
f_out.write(struct.pack('>I', 0x00000000)) # 4 byte 包尾
f_out.flush()
else:
f_out.write(item)
f_out.write(struct.pack('>I', 0x00000000) * 68) # 272 byte
mm += 1 except EOFError:
f_out.write(struct.pack('>I', 0x00000000) * 516 * (512 - mm)) # (2048 + 16)/4 = 516
f_out.write(struct.pack('>I', 0x00000000)) # 4 byte 包尾
f_out.close()
print('end time: ' + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
break if __name__ == "__main__":
pipe = multiprocessing.Pipe()
process_producer = multiprocessing.Process(target = producer, args = (pipe[0],))
process_consumer = multiprocessing.Process(target = consumer, args = (pipe[1],))
process_producer.start()
process_consumer.start()
pipe[0].close()
process_producer.join()
process_consumer.join() print('OK')

Python管道进行数据的吞吐处理的更多相关文章

  1. 使用Python解析JSON数据的基本方法

    这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下:     ----------------------------------- ...

  2. python matplotlib plot 数据中的中文无法正常显示的解决办法

    转发自:http://blog.csdn.net/laoyaotask/article/details/22117745?utm_source=tuicool python matplotlib pl ...

  3. Python/Numpy大数据编程经验

    Python/Numpy大数据编程经验 1.边处理边保存数据,不要处理完了一次性保存.不然程序跑了几小时甚至几天后挂了,就啥也没有了.即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点.   ...

  4. Windows下Python读取GRIB数据

    之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...

  5. 为什么说Python 是大数据全栈式开发语言

    欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...

  6. 用Python浅析股票数据

    用Python浅析股票数据 本文将使用Python来可视化股票数据,比如绘制K线图,并且探究各项指标的含义和关系,最后使用移动平均线方法初探投资策略. 数据导入 这里将股票数据存储在stockData ...

  7. Python读取JSON数据,并解决字符集不匹配问题

    今天来谈一谈Python解析JSON数据,并写入到本地文件的一个小例子. – 思路如下 从一个返回JSON天气数据的网站获取到目标JSON数据串 使用Python解析出需要的部分 写入到本地文件,供其 ...

  8. 使用 python 处理 nc 数据

    前言 这两天帮一个朋友处理了些 nc 数据,本以为很简单的事情,没想到里面涉及到了很多的细节和坑,无论是"知难行易"还是"知易行难"都不能充分的说明问题,还是& ...

  9. 【转】Python——plot可视化数据,作业8

    Python——plot可视化数据,作业8(python programming) subject1k和subject1v的形状相同 # -*- coding: utf-8 -*- import sc ...

随机推荐

  1. LNAMP架构项目一

    一.第一阶段 假设:公司初期只有一台web服务器,搭建Web服务器的脚本如下: 1 #检查环境 2 setenforce 0 &> /dev/null 3 sed -i s/=enfor ...

  2. 6T硬盘分区

    6T硬盘分区 1.umount /data1   #  如果正在使用需要此命令卸载. 2.parted /dev/sdb     # parted 分区工具,选择要分区的硬件设备 mklabel gp ...

  3. Python对比两个txt文件内容

    difflib模块作为python的标准库模块,无需安装,作用是比对文本之间的差异,且支持输出可读性比较强的html格式.#!coding=utf-8 # 2018-9-19 import sys i ...

  4. DLL重定向处理

    说明 目前正在做的项目批次功能涉及第三方插件,而第三方插件需依赖4.* 版本的Newtonsoft.Json.dll,由于现有功能已经使用6.*版本的Newtonsoft.Json.dll,故采用了d ...

  5. F5 BIG-IQ 8.0 发布 - 借助一个统一的管理平台,管理您的所有 BIG-IP 设备和服务

    针对完整可见性和控制的 BIG-IQ 集中式管理 BIG-IP 设备和服务的端到端控制 高效管理(编排.可见性和合规性)依赖于跨本地和云部署中始终如一的应用服务和安全策略.利用独立统一的管理平台实现对 ...

  6. IDEA 最实用快捷键【MAC版本】

    目录 option + F7 Ctrl + B / Ctrl +鼠标左键(一键两用,可以无限循环的跳过来跳过去,我跳过去了,我又跳回去了) command + E (这个快捷键很有用,为什么我老是用不 ...

  7. 八、数据拟合分析seaborn

    本文的主要目的是记住最主要的函数,具体的用法还得查API文档. 首先导入包: 1 %matplotlib inline 2 import numpy as np 3 import pandas as ...

  8. springboot 搭配redis缓存

    1.引入依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId&g ...

  9. selenium元素定位陷阱规避

    为什么selenium可以在各个浏览器上运行?因为selenium在与各个浏览器驱动执行前,会先把脚本转化成webdriver, webdriver wire协议(一种json格式的协议),这样就与脚 ...

  10. robotframework常用关键字

    robotframework关键字 可以将关键字看作是处理数据的方法.robotframework的关键字和测试数据组成了测试用例. robotframework关键字包括系统关键字和用户关键字.用户 ...