Pandas系列之入门篇——HDF5

Posted 三界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas系列之入门篇——HDF5相关的知识,希望对你有一定的参考价值。

Pandas系列之入门篇——HDF5

简介

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

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

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

文件锁(fcntl)

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

  1. 引入相关模块

    import fcntl
  2. 创建文件锁

    """
        Add LOCK_EX(排它锁) to test.txt depend on fileno
    """
    f = open(‘test.txt‘)
    fileno = f.fileno()
    fcntl.flock(fileno, fcntl.LOCK_EX)

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

  3. 释放文件锁

    """
        Release lock on test.txt
    """
    fcntl.flock(f.fileno(), fcntl.LOCK_UN)
    f.close()

以上是关于Pandas系列之入门篇——HDF5的主要内容,如果未能解决你的问题,请参考以下文章

Pandas高级数据分析快速入门之二——基础篇

Pandas高级数据分析快速入门之五——机器学习特征工程篇

Pandas高级数据分析快速入门之五——机器学习特征工程篇

Pandas高级数据分析快速入门之四——数据可视化篇

Pandas高级数据分析快速入门之六——机器学习预测分析篇

Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇