Python系列之入门篇——HDF5

简介

HDF5(层次性数据格式)作用于大数据存储,其高效的压缩方式节约了不少硬盘空间,同时也给查询效率带来了一定的影响,压缩效率越高,查询效率越低。pandas v0.20.2(含)之后的版本默认选用blosc压缩,跟bzip2相比,其间做了一个小测试,10000条数据,bzip2的压缩率是blosc的30倍,而查询效率blosc却是bzip2的8倍。至于项目中选用哪种压缩方式,需要看具体需求。

回顾上一节《Python系列之入门篇——Pandas》

上一节提到用hdf5作为大数据存储,有很多细节值得注意的,其中包括表的设计、索引的设计、压缩方式的选择、多进程操作文件的处理方式等等。这一节根据自己项目中遇到的问题来分享下最后一点,也就是多进程操作文件,如何来保证文件的一致性。

文件锁(fcntl)

我们可以利用文件锁来保证每时每刻有且只有一个进程可以操作同一个文件,从而避免进程间的相互竞争导致意想不到的结果,甚至会破坏整个hdf5文件,导致数据不可查的严重后果。

引入相关模块

import fcntl

创建文件锁

"""

Add LOCK_EX(排它锁) to test.txt depend on fileno

"""

f = open('test.txt')

fileno = f.fileno()

fcntl.flock(fileno, fcntl.LOCK_EX)

此时如果有另一个进程同时操作test.txt,将会被阻塞,直到上一个拥有该文件锁的进程退出。

释放文件锁

"""

Release lock on test.txt

"""

fcntl.flock(f.fileno(), fcntl.LOCK_UN)

f.close()

Pandas系列之入门篇

Pandas系列之入门篇 简介 pandas 是 python用来数据清洗.分析的包,可以使用类sql的语法方便的进行数据关联.查询,属于内存计算范畴, 效率远远高于硬盘计算的数据库存储.另外pand ...

Python系列之入门篇——HDFS

Python系列之入门篇--HDFS 简介 HDFS (Hadoop Distributed File System) Hadoop分布式文件系统,具有高容错性,适合部署在廉价的机器上.Python ...

Python系列之入门篇——MYSQL

Python系列之入门篇--MYSQL 简介 python提供了两种mysql api, 一是MySQL-python(不支持python3),二是PyMYSQL(支持python2和python3) ...

【转】C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。

C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子. 标签: c#objectnewlineexceptionbytestring 2010-05-17 01:10 117109人阅读 ...

C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁 ?

第一篇文章我相信很多人不看都能做的出来,但是,用过微软SerialPort类的人,都遇到过这个尴尬,关闭串口的时候会让软件死锁.天哪,我可不是武断,算了.不要太绝对了.99.9%的人吧,都遇到过这个问 ...

Python系列之入门篇——pytables及其客户端

pytables及其客户端查看 pytables # ubuntu sudo apt-get install python-tables pip install flask flask-httpaut ...

Python系列之入门篇——python2.7.13安装

Python2.7.13 安装 说明 以下所有操作都基于centos6.9 1. Issue zlib zlib-devel是安装setuptools依赖的模块,需要在安装python之前先安装这两个 ...

Docker系列之入门篇

Dcoker是什么? 概述 Docker 是世界领先的软件容器平台.开发人员利用 Docker 可以消除协作编码时“在我的机器上可正常工作”的问题.运维人员利用 Docker 可以在隔离容器中并行运行 ...

Redis系列一 - 入门篇

问:项目中为何要选用Redis? 答:传统的关系型数据库(如MySQL)已经不适用所有的场景了,比如美云销抢单活动的库存扣减,APP首页的访问流量高峰等等,都容易把数据库打崩,所以引入了缓存中间件,目 ...

随机推荐

java学习笔记(3)之面向对象(1)

下面来谈谈我对面向对象的一些理解和总结. 1.什么叫面向对象?我自己的理解就是一种编程思想,强调对象,是一种思考问题的思维模式.在学习面向对象的时候,我们要建立起自己面向对象的思维模式. (1).先整 ...

解决触摸屏设备click事件300ms的延迟的问题

从点击屏幕上的元素到触发元素的 click 事件,移动浏览器(触摸屏)会有大约 300 毫秒的等待时间.为什么这么设计呢? 因为它想看看你是不是要进行双击(double tap)操作.300ms的等待 ...

python3.5------用户的三次验证

笔者QQ: 360212316 逻辑图 代码 #/usr/bin/python # -*- coding: utf-8 -*- lock = open("black_user_list.tx ...

javascript 代码可读性

可读性的大部分内容都是和代码缩进相关的,必须保证代码有良好的格式.可读性的另一方面就是注释,一般而言,有如下一些地方需要进行注释 1.1.1 函数和方法 每个函数或方法都应该包含一个注释,描述其目的和 ...

easyui怎样实现textarea

uqery easyui 本身没有实现textarea的封装,用的知识html元素,但是提供了textarea的验证器.

Jsch

JSch is a pure Java implementation of SSH2. JSch allows you to connect to an sshd server and use por ...

Linux学习之nfs实例

在对exports文件进行了正确的配置后,就可以启动NFS服务器了. 1.启动NFS服务器 为了使NFS服务器能正常工作,需要启动portmap和nfs两个服务,并且portmap一定要先于nfs启动 ...

Mac下将ISO写入U盘镜像

在Mac下面如果想做一个启动U盘,确实不如windows下那么方便,Windows下面有ultraiso+王涛,Mac下面测可以用下面的办法. 打开磁盘工具 插入U盘,并在磁盘工具里面找到U盘,把它卸 ...

python对象转化为json串、json串转化为python串

1.1. JSON简介: JavaScript Object Notation(JavaScript对象表示法) JSON是存储和交换文本信息的语法.类似XML JSON比XML更小.更快.更易解析 ...

vue 需求 data中的数据之间的调用

我遇到过这种情况  就是在我的data中 会有数据调用data中的其他数据 如图  我的alertInfoType需要拿到screeningCondition中type的值 用过vue的都知道 我是不 ...

c# hdf5 写string_Pandas系列之入门篇——HDF5相关推荐

  1. 【IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (下篇)-ipfs + Ethereum 大图片存储

    目录 1. 系列文章 2. 项目描述及效果展示 3. 阅读本文需要掌握的知识 4. 源码 5. 运行程序 6. 技术交流 1. 系列文章 [IPFS + 区块链 系列] 入门篇 - IPFS环境配置 ...

  2. Python系列之入门篇——HDFS

    Python系列之入门篇--HDFS 简介 HDFS (Hadoop Distributed File System) Hadoop分布式文件系统,具有高容错性,适合部署在廉价的机器上.Python ...

  3. IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (中篇)-js-ipfs-api - 图片上传到IPFS以及下载

    目录 1. 项目效果图 2. 创建React项目 3. 完成UI逻辑 4. 安装ipfs-api 5. App.js导入IPFS 6. 实现上传图片到IPFS的Promise函数 7. 上传图片到IP ...

  4. IPFS + 区块链 系列】 入门篇 - IPFS + Ethereum (上篇)-js-ipfs-api

    目录 1. 内容简介 2. IPFS-HTTP效果图 3. 实现步骤 3.1 安装create-react-app 3.2 React项目创建 3.3 运行React项目 3.4 浏览项目 3.5 安 ...

  5. Yocto系列讲解[入门篇] 1 - 快速入门熟悉Yocto的构建

    By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! ...

  6. C# 串口操作系列(1) -- 入门篇,一个标准的,简陋的串口例子。

    我假设读者已经了解了c#的语法,本文是针对刚打算解除串口编程的朋友阅读的,作为串口编程的入门范例,也是我这个系列的基础. 我们的开发环境假定为vs2005(虽然我在用vs2010,但避免有些网友用20 ...

  7. 软件测试系列之入门篇(一)

    一.你知道软件测试有多重要吗? 在国际上,软件测试(软件质量控制)是一件非常重要的工程工作,测试也作为一个非常独立的职业.在IBM.Microsoft等开发大型系统软件公司,很多重要项目的开发测试人员 ...

  8. 软件測试系列之入门篇(一)

    一.你知道软件測试有多重要吗? 在国际上.软件測试(软件质量控制)是一件很重要的project工作.測试也作为一个很独立的职业. 在IBM.Microsoft等开发大型系统软件公司,许多重要项目的开发 ...

  9. RabbitMQ系列笔记入门篇

    导语 在了解本篇文章之前,先复习以下知识点,如果你对RabbitMQ还不了解,请先查看RabbitMQ系列笔记介绍篇这篇文章. 生产者:发送消息的程序 队列:消息的中转站 消费者:接收消息的程序 在以 ...

最新文章

  1. c# 找出目录下的所有子目录_第9期:Linux下文件系统满的处理
  2. linux查看vxlan命令,[svc]linux上vxlan实战
  3. es6笔记 day3---对象简介语法以及对象新增
  4. linux php cpu,获取Linux服务器性能CPU、内存、硬盘等使用率 PHP
  5. leetcode - Linked List Cycle
  6. php实现论坛系统,详解PHP论坛实现系统的思路
  7. XGBoost实战与调参优化
  8. python中snip_我终于弄懂了Python的装饰器(三)
  9. 使用某些 DOCTYPE 时会导致 document.body.scrollTop 失效
  10. 设计模式解密(9)- 装饰者模式
  11. .NET框架类在ASP.NET中的使用(1)——QA
  12. VS-c++ 项目新建文件夹
  13. 云原生与业务可观测性
  14. 决战平安京解包--专有模型格式转换成PMX
  15. python余弦定理求角_python余弦定理计算相似度
  16. 【obs】发送前丢帧算法及帧优先级设置
  17. html标签的默认样式及去除
  18. POI 实现Word替换文本2种情况(正常文本、表格文本)
  19. 证明:矩阵不同特征值对应的特征向量之间线性无关
  20. Unable to start service Intent U=0: not found

热门文章

  1. 机器学习训练建模、集成模型、模型评估等代码总结(2019.05.21更新)
  2. kafka分区与分组原理_Kafka工作原理
  3. pyqt5 qscrollarea到达_PyQt5如何用QPainter在QScrollArea上画线?
  4. vue php tree,Vue 实现树形视图数据功能
  5. cad填充图案乱理石_CAD绘图,缺少填充图案怎么办?900多种自定义图案可解燃眉之急...
  6. JavaScript之对象序列化详解
  7. Android学习笔记进阶20之得到图片的缩略图
  8. android UI开源库
  9. 1052. Linked List Sorting
  10. 帮MM修电脑的三个步骤-此文绝对实用