Python系列之入門篇 HDF5

2022-03-17 08:03:24 字數 975 閱讀 3863

hdf5(層次性資料格式)作用於大資料儲存,其高效的壓縮方式節約了不少硬碟空間,同時也給查詢效率帶來了一定的影響,壓縮效率越高,查詢效率越低。pandas v0.20.2(含)之後的版本預設選用blosc壓縮,跟bzip2相比,其間做了乙個小測試,10000條資料,bzip2的壓縮率是blosc的30倍,而查詢效率blosc卻是bzip2的8倍。至於專案中選用哪種壓縮方式,需要看具體需求。

上一節提到用hdf5作為大資料儲存,有很多細節值得注意的,其中包括表的設計、索引的設計、壓縮方式的選擇、多程序操作檔案的處理方式等等。這一節根據自己專案中遇到的問題來分享下最後一點,也就是多程序操作檔案,如何來保證檔案的一致性。

我們可以利用檔案鎖來保證每時每刻有且只有乙個程序可以操作同乙個檔案,從而避免程序間的相互競爭導致意想不到的結果,甚至會破壞整個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()

IHttpHandler 系列一 入門篇

string ip context.request.userhostaddress 獲取ip if ip override the isreusable property public bool isreusable 以上就是乙個簡單的實現了ihttphandler介面的處理程式,呼叫該程式的web...

Python入門篇(一)

對了,入門篇都是python3.6的,其實只要有其它物件導向的經驗,看一遍就ok了,如果沒有基礎的朋友,可就得多寫幾遍嘍,理解物件的用法,未完待續 一 概念 類 用來描述具有 相同屬性和方法的物件的集合 二 命名方式 1 類名大駝峰 2 方法名小駝峰 3 嚴格區分大小寫 三 類的定義 class c...

需求跟蹤系列 I 入門篇

為什麼要需求跟蹤?我覺得關鍵是在於管理變更,在於變更來臨時和客戶討論 討價還價 的依據 雖然不好聽,但這是實話 如果你的開發工作是一錘子買賣,也就是說以後沒有新版本公升級,也不需要太多的維護,那需求跟蹤對你來說並不重要。但對大多數團隊來講,當變化來臨時,我們需要知道該需求的變化將可能影響系統的哪些功...