我正在使用python/pysam來分析測序數據。在其教程(pysam - An interface for reading and writing SAM files)的命令隊友說:如何緩存讀取?
'這種方法對於高吞吐量處理太慢。如果讀取需要使用它的隊友進行處理,那麼可以使用讀取的名稱排序文件,或者更好的辦法是緩存讀取。
你會如何「緩存讀取」?
我正在使用python/pysam來分析測序數據。在其教程(pysam - An interface for reading and writing SAM files)的命令隊友說:如何緩存讀取?
'這種方法對於高吞吐量處理太慢。如果讀取需要使用它的隊友進行處理,那麼可以使用讀取的名稱排序文件,或者更好的辦法是緩存讀取。
你會如何「緩存讀取」?
AlignmentFile採取的第一個參數:
filepath_or_object
因此而不是提供一個文件名,則可以提供支持的文件類接口的對象,即方法seek
,read
,tell
。 爲此實現類時,您還可以在讀取上實現緩存,這當然必須依賴於當前的光標位置。
如果文件大小是足夠小,以便它能夠裝入內存,你可以閱讀完整的文件和io.BytesIO
對象進行操作,沒有必要讓自己的等級:
data = io.BytesIO(open('datafile','rb').read())
your_object = AlignmentFile(data, <other args>)
我不知道這會加速很多事情,因爲我認爲現代操作系統(我知道linux會這樣做)做緩存文件訪問。所以也許這就夠了。