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. Docker存储(4)

    一.docker存储资源类型 用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及到容器的数据管理 (1)Da ...

  2. Stm32高级定时器(转自:luowei_memory)

    1 定时器的用途 2 高级定时器框图 3 时基单元 4 通道 1 定时器的用途 已知一个波形求另一个未知波形(信号长度和占空比) 已知波形的信号长度和占空比产生一个相应的波形 增量正交编码器驱动电机获 ...

  3. Centos6.5 修改主机名(hostname)

    centos6需要修改两处:一处是/etc/sysconfig/network,另一处是/etc/hosts,只修改任一处会导致系统启动异常.首先切换到root用户. /etc/sysconfig/n ...

  4. 又卡了~从王者荣耀看Android屏幕刷新机制

    前言 正在带妹子上分的我,团战又卡了,我该怎么向妹子解释?在线等. "卡"的意思 不管是端游还是手游,我们都会时不时遇到"卡"的时候,一般这个卡有两种含义: 掉 ...

  5. Echarts的柱状统计图出现x轴统计时间出现间隔显示的问题

    今天在使用Echarts的柱状统计图出现x轴统计时间出现间隔显示的问题: 数据都拿到了,放到Json数组都是完整的, 展现是时候 如下图:

  6. windows 映射驱动器 图标显示不正常

    正常图标是这样的: 我的变成了这样: 解决方法: 注册表进入: HKEY_CURRENT_USER\SOFTWARE\Classes\Applications\Explorer.exe\Drives\ ...

  7. BTC芯片介绍

    BTC芯片介绍 Innosilicon宣布全球第一和最佳的28nm比特币ASIC和参考矿机 A1Craft(也称为A1)是2013年世界上最好的BTC ASIC,这是比特币区块哈希算法的易于使用,定制 ...

  8. 降维-基于RDD的API

    降维-基于RDD的API Singular value decomposition (SVD) Performance SVD Example Principal component analysis ...

  9. VB 老旧版本维护系列---读取xml某个节点的值

    读取xml某个节点的值 '定义xml字符串内容地址 Dim xmlFileStr As String = "" '定义所需读取节点的名称 Dim readNodeName As S ...

  10. 摆脱鼠标之Dos学习

    2015/12/24 for循环 1,创建文件 http://blog.csdn.net/wangxingbao4227/article/details/17009447 关于for循环的总结,很详细 ...