Я хочу скомпилировать функцию python с помощью cython, для чтения двоичного файла, пропускающего некоторые записи (без чтения всего файла, а затем нарезки, поскольку у меня закончилась бы нехватка памяти). Я могу придумать что-то вроде этого:Передача дескриптора файла функции 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» также, обработчик файла. Как я могу определить его тип в цитоне, поскольку он не является «стандартным» типом, например. целое число. Спасибо.
Почему важно набирать эту переменную? Поскольку это объект python, вы не получите никакой скорости. – Bakuriu
Если вы хотите присвоить его переменной класса, вы используете тип 'object'. –
Так что написание дескриптора файла не сильно изменится? Я думал, что при наборе всех переменных без исключений улучшена производительность по сравнению с набором некоторых из них. – user2061949