我想使用cython编译一个Python函数,用于跳过一些记录读取二进制文件(而不是读取整个文件再切片,因为这样会耗尽内存)。我可以提供类似以下的代码:
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,...
然而,对于使用cython编译函数“FromFileSkip”,我想要定义该函数中涉及的所有类型,包括文件处理程序“fid”。由于它不是一个“标准”类型,例如整数,因此我应该如何在cython中定义它的类型。
object
类型。 - Henry Gomersallfile
,它是内置的。我不知道这是否有助于Cython。由于它是在C中实现的类型,因此可能能够避免通过解释器调用其方法。话虽如此,文档似乎暗示Cython对于任何非原始类型都没有做任何特殊处理。 - millimoose