Сроки, сколько времени требуется, чтобы прочитать файл
Я пишу процесс, который требует от меня построчно читать в большом файле jsonl (в некоторых случаях +4 гигабайта), выполнять операции с этими строками, а затем записывать их в файл.
Я пытаюсь профилировать приложение, синхронизируя определенные операции, одной из которых должно быть чтение файла. Я также пытаюсь улучшить производительность путем объединения операций чтения перед выполнением этих операций, а затем записи. У меня есть функция, которая выдает партии маршалированного json (список диктов), и методология чтения по времени (и, если необходимо, загрузки json) не кажется мне очевидной.
def batch(self, batch_size):
result = []
for line in self.file: <-- I would like to time each read
l = line.strip()
if not l:
break
result.append(ujson.loads(l))
if len(result) >= batch_size:
to_return = result
result = []
yield to_return
if result:
yield result
Я думал о том, чтобы сделать что-то подобное, однако я не уверен, что это лучший способ, которым я мог бы сделать это
def batch_1(self, batch_size):
result = []
while True:
start_read = time.time()
line = self.file.readline()
self.read_time += time.time() - start_read
if not line:
break
result.append(line.strip())
if len(result) >= batch_size:
to_return = result
result = []
yield to_return
if result:
yield result
Мое желаемое использование этой функции будет следующим
for batch in self.reader.batch(self.batch_size):
...
...
Какие-либо предложения? Спасибо!