2015-09-03 81 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) 

注意代替,這將使用單位千分之一,兆字節等,而不是分鐘和天數>。 <。