簡體   English   中英

跟蹤Python中的文件加載進度

[英]Tracking file load progress in Python

我使用的很多模塊將整個文件導入到內存中,或者在處理文件的內容時將其涓涓細流。 我想知道是否有辦法跟蹤這種加載進度? 可能是一個需要回調的包裝類?

我會通過確定文件的大小來做到這一點,然后簡單地將總數除以讀取的字節數。 像這樣:

import os

def show_progress(file_name, chunk_size=1024):
    fh = open(file_name, "r")
    total_size = os.path.getsize(file_name)
    total_read = 0
    while True:
        chunk = fh.read(chunk_size)
        if not chunk: 
            fh.close()
            break
        total_read += len(chunk)
        print "Progress: %s percent" % (total_read/total_size)
        yield chunk

for chunk in show_progress("my_file.txt"):
    # Process the chunk
    pass 

編輯:我知道這不是最好的代碼,但我只是想展示這個概念。

如果您實際上是指“導入”(而不是“讀取”),那么您可以覆蓋導入模塊定義。 您可以添加計時功能。

請參閱imp模塊。

如果您的意思是“讀取”,那么您可以使用自己的文件類包裝器輕松地包裝Python文件。 文件不會暴露太多方法。 您可以覆蓋有趣的以獲取時序數據。

>>> class MyFile(file):
...     def read(self,*args,**kw):
...         # start timing
...         result= super(MyFile,self).read(*args,**kw)
...         # finish timing
...         return result

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM