Python管道进行数据的吞吐处理
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管道进行数据的吞吐处理的更多相关文章
- 使用Python解析JSON数据的基本方法
这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下: ----------------------------------- ...
- python matplotlib plot 数据中的中文无法正常显示的解决办法
转发自:http://blog.csdn.net/laoyaotask/article/details/22117745?utm_source=tuicool python matplotlib pl ...
- Python/Numpy大数据编程经验
Python/Numpy大数据编程经验 1.边处理边保存数据,不要处理完了一次性保存.不然程序跑了几小时甚至几天后挂了,就啥也没有了.即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点. ...
- Windows下Python读取GRIB数据
之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...
- 为什么说Python 是大数据全栈式开发语言
欢迎大家访问我的个人网站<刘江的博客和教程>:www.liujiangblog.com 主要分享Python 及Django教程以及相关的博客 交流QQ群:453131687 原文链接 h ...
- 用Python浅析股票数据
用Python浅析股票数据 本文将使用Python来可视化股票数据,比如绘制K线图,并且探究各项指标的含义和关系,最后使用移动平均线方法初探投资策略. 数据导入 这里将股票数据存储在stockData ...
- Python读取JSON数据,并解决字符集不匹配问题
今天来谈一谈Python解析JSON数据,并写入到本地文件的一个小例子. – 思路如下 从一个返回JSON天气数据的网站获取到目标JSON数据串 使用Python解析出需要的部分 写入到本地文件,供其 ...
- 使用 python 处理 nc 数据
前言 这两天帮一个朋友处理了些 nc 数据,本以为很简单的事情,没想到里面涉及到了很多的细节和坑,无论是"知难行易"还是"知易行难"都不能充分的说明问题,还是& ...
- 【转】Python——plot可视化数据,作业8
Python——plot可视化数据,作业8(python programming) subject1k和subject1v的形状相同 # -*- coding: utf-8 -*- import sc ...
随机推荐
- 小白菜Windows10系统安装Linux(ubuntu)虚拟机超详细教程(全)
注:本文"( )"中的内容可忽略 1.下载VMware(威睿 计算机虚拟化软件) 官方下载地址 默认为最新版15.1.0,我们选择立即下载 (找一个比较大的盘不要是 ...
- S11 Linux系统管理命令
11.1 lsof:查看进程打开的文件 11.2 uptime:显示系统的运行时间及负载 11.3 free:查看系统内存信息 11.4 iftop:动态显示网络接口流量信息 11.5 vmstat: ...
- 7.10-11 visudo、sudo
7.10 visudo:编辑 sudoers文件 visudo命令是专门用来编辑/etc/sudoers这个文件的,同时提供语法检查等功能./etc/sudoers文件是sudo命令的配置文件 ...
- 04丨MongoDB特色及优势
- 文件包含之包含了Linux文件描述符
0x00 原理 文件描述符是内核为了高效管理已被打开的文件所创建的索引,用于指向被打开的文件,所有执行I/O操作的系统调用都通过文件描述符. 翻译成人话- 可以认为是指向文件的一个指针,如果有文件 ...
- linux免密传输文件 nc
nc命令很强大,用来在内网传输小文件也不错,最主要的是仅一次传输的情况下不需要用户和密码即可直接接受与发送文件 不管是linux2linux 还是 linux2windows皆可 先决条件: 1.使用 ...
- win系统下如何安装xgboost,开发环境是anaconda,以及这中间需要注意的问题
最近学到了xgboost,但是anaconda并没有这个环境只好自己安装了... 注: (1)并没有测试anaconda在2.x的版本下是如何安装的, 基本上应该是大同小类的,我的anaconda版本 ...
- Vitis-AI集成
Vitis-AI集成 Vitis-AI是Xilinx的开发堆栈,用于在Xilinx平台(包括边端设备和Alveo卡)上进行硬件加速的AI推理.它由优化的IP,工具,库,模型和示例设计组成.设计时考虑到 ...
- TinyML-TVM是如何驯服Tiny的(下)
TinyML-TVM是如何驯服Tiny的(下) Lazy Execution实际上,随着通信开销开始占主导地位,一旦用户请求,就执行算子的开销变得非常昂贵.可以通过延迟评估直到用户需要调用的结果来提高 ...
- CUDA 8混合精度编程
CUDA 8混合精度编程 Mixed-Precision Programming with CUDA 8 论文地址:https://devblogs.nvidia.com/mixed-precisio ...