- import os
- import sys
- import urllib
- from time import time, sleep
- class RateLimit(object):
- """Rate limit a url fetch"""
- def __init__(self, rate_limit):
- """rate limit in kBytes / second"""
- self.rate_limit = rate_limit
- self.start = time()
- def __call__(self, block_count, block_size, total_size):
- total_kb = total_size / 1024
- downloaded_kb = (block_count * block_size) / 1024
- elapsed_time = time() - self.start
- if elapsed_time != 0:
- #實際下載速度
- rate = downloaded_kb / elapsed_time
- print "%d kb of %d kb downloaded %f.1 kBytes/s\n" % (downloaded_kb ,total_kb, rate),
- expected_time = downloaded_kb / self.rate_limit
- sleep_time = expected_time - elapsed_time
- print "Sleep for", sleep_time
- #等待時間
- if sleep_time > 0:
- sleep(sleep_time)