[英]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.