计算读取文件所需的时间

时间:2018-02-22 19:21:53

标签: python json profiling jsonlines

我正在编写一个流程,要求我逐行读取大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):
    ...
    ...    

有什么建议吗?谢谢!

0 个答案:

没有答案