2015-12-16 64 views

回答

9

Caching是加速長時間運行操作的典型方法。它爲了計算速度而犧牲了內存。

讓我們假設你有一個函數,給定一組參數總是返回相同的結果。不幸的是,這個功能非常慢,你需要把它稱爲相當數量的放緩你的程序。

你可以做的是存儲有限數量的{parameters:result}組合並在任何時候用相同的參數調用函數時跳過它的邏輯。

這是一個骯髒的技巧,但相當有效,特別是如果參數組合低於功能速度。

在Python 3中有一個decorator用於此目的。
在Python 2中,a library可以提供幫助,但您需要更多的工作。

3

AlignmentFile採取的第一個參數:

filepath_or_object

因此而不是提供一個文件名,則可以提供支持的文件類接口的對象,即方法seekreadtell。 爲此實現類時,您還可以在讀取上實現緩存,這當然必須依賴於當前的光標位置。

如果文件大小是足夠小,以便它能夠裝入內存,你可以閱讀完整的文件和io.BytesIO對象進行操作,沒有必要讓自己的等級:

data = io.BytesIO(open('datafile','rb').read()) 
your_object = AlignmentFile(data, <other args>) 

我不知道這會加速很多事情,因爲我認爲現代操作系統(我知道linux會這樣做)做緩存文件訪問。所以也許這就夠了。