2015-09-03 43 views
1

我提交了一个关于此问题的问题,但想在此处询问任何解决方法。python-progressbar library - inverse FileTransferSpeed

对于许多移动缓慢的环路,传输速度可能是0.01 B/s或.00 B/s,这是非常不具有信息性的。有没有一种方法可以显示这些情况下的S/B? 175 s/B更具描述性和帮助性。你有一个我现在可以使用的解决方法吗?因为看到.00 B/s并没有告诉我有多快我循环。

https://github.com/WoLpH/python-progressbar/issues/25

回答

2

通过对进度代码搜索和仿效FileTransferSpeed下课后,这里是我想出了一个解决方案,你可以在你的代码扑通的FileTransferSpeed()

class InvFileTransferSpeed(Widget): 
    'Widget for showing the transfer speed (useful for file transfers).' 

    format = '%6.2f %ss/%s' 
    prefixes = ' kMGTPEZY' 
    __slots__ = ('unit', 'format') 

    def __init__(self, unit='loop'): 
    self.unit = unit 

    def update(self, pbar): 
    'Updates the widget with the current SI prefixed speed.' 

    if pbar.seconds_elapsed < 2e-10 or pbar.currval < 2e-10: # =~ 0 
     scaled = power = 0 
    else: 
     speed = pbar.seconds_elapsed/pbar.currval 
     power = int(math.log(speed, 1000)) 
     scaled = speed/1000.**power 

    return self.format % (scaled, self.prefixes[power], self.unit) 

注意代替,这将使用单位千分之一,兆字节等,而不是分钟和天数>。 <。