4
我想用cython編譯一個python函數,用於讀取跳過一些記錄的二進制文件(不需要讀取整個文件然後切片,因爲我將耗盡內存)。我能想出這樣的事情:將文件句柄傳遞給cython函數
def FromFileSkip(fid, count=1, skip=0):
if skip>=0:
data = numpy.zeros(count)
k = 0
while k<count:
try:
data[k] = numpy.fromfile(fid, count=1, dtype=dtype)
fid.seek(skip, 1)
k +=1
except ValueError:
data = data[:k]
break
return data
,然後我可以使用這樣的功能:
f = open(filename)
data = FromFileSkip(f,...
然而,對於編制功能「FromFileSkip」與用Cython,我想定義函數中涉及的所有類型,所以「fid」也是文件處理程序。我如何在cython中定義它的類型,因爲它不是「標準」類型,例如一個整數。 謝謝。
爲什麼鍵入該變量很重要?由於它是一個python對象,你不會獲得任何加速。 – Bakuriu 2013-03-12 08:44:33
如果要將其分配給類變量,則使用'object'類型。 – 2013-03-12 09:10:12
因此,輸入文件句柄不會有太大改變?我認爲無需例外地輸入所有變量,與僅輸入一些變量相比,性能得到提高。 – user2061949 2013-03-12 09:53:08