题
一个非常多的模块的我使用导入整个文件到存储器中或当他们处理它涓流文件的内容。我不知道是否有任何方法来跟踪这种加载进程?可能的包装类,需要一个回调?
解决方案
我会做此通过确定该文件的大小,然后简单地通过读出的字节数的总分割。像这样:
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
编辑:我知道这是不是最好的代码,但我只是想表明的概念
其他提示
如果您实际上意味着“进口”(而不是“读”),那么你可以重写导入模块定义。可以添加定时的能力。
请参阅小鬼模块。
如果你的意思是“读”,那么你可以平凡包装Python文件与自己的文件类包装。文件不要暴露太多的方法。您可以覆盖有趣的获得定时的数据。
>>> class MyFile(file):
... def read(self,*args,**kw):
... # start timing
... result= super(MyFile,self).read(*args,**kw)
... # finish timing
... return result
不隶属于 StackOverflow