我正在编写一个流程,要求我逐行读取大jsonl个文件(在某些情况下为+4 gigs),对这些行执行操作,然后将它们写入文件。< / p>
我试图通过计时某些操作来分析应用程序,其中一个操作应该是读取文件。我还试图通过在执行这些操作然后编写之前将读取批处理来提高性能。我有一个函数可以产生批量编组的json(一个dicts列表),并且定时读取的方法(以及,如果需要,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):
...
...
有什么建议吗?谢谢!