提交 08ef63b6 编写于 作者: W wuzewu

limit refresh frequency

上级 377f2496
...@@ -20,15 +20,18 @@ from __future__ import print_function ...@@ -20,15 +20,18 @@ from __future__ import print_function
import shutil import shutil
import os import os
import sys import sys
import time
import hashlib import hashlib
import requests import requests
import tempfile import tempfile
import tarfile import tarfile
from paddle_hub.tools import utils from paddle_hub.tools import utils
from paddle_hub.tools.logger import logger from paddle_hub.tools.logger import logger
from paddle_hub.io.reader import csv_reader from paddle_hub.io.reader import csv_reader
__all__ = ['Downloader'] __all__ = ['Downloader']
FLUSH_INTERVAL = 0.1
def md5file(fname): def md5file(fname):
...@@ -46,12 +49,17 @@ class Downloader: ...@@ -46,12 +49,17 @@ class Downloader:
save_path, save_path,
save_name=None, save_name=None,
retry_limit=3, retry_limit=3,
print_progress=False): print_progress=False,
replace=False):
if not os.path.exists(save_path): if not os.path.exists(save_path):
utils.mkdir(save_path) utils.mkdir(save_path)
save_name = url.split('/')[-1] if save_name is None else save_name save_name = url.split('/')[-1] if save_name is None else save_name
file_name = os.path.join(save_path, save_name) file_name = os.path.join(save_path, save_name)
retry_times = 0 retry_times = 0
if replace and os.path.exists(file_name):
os.remove(file_name)
while not (os.path.exists(file_name)): while not (os.path.exists(file_name)):
if os.path.exists(file_name): if os.path.exists(file_name):
logger.info("file md5", md5file(file_name)) logger.info("file md5", md5file(file_name))
...@@ -72,17 +80,23 @@ class Downloader: ...@@ -72,17 +80,23 @@ class Downloader:
with open(file_name, 'wb') as f: with open(file_name, 'wb') as f:
dl = 0 dl = 0
total_length = int(total_length) total_length = int(total_length)
starttime = time.time()
for data in r.iter_content(chunk_size=4096): for data in r.iter_content(chunk_size=4096):
dl += len(data) dl += len(data)
f.write(data) f.write(data)
if print_progress: if print_progress:
done = int(50 * dl / total_length) done = int(50 * dl / total_length)
sys.stdout.write("\r%s : [%-50s]%.2f%%" % if time.time() - starttime >= FLUSH_INTERVAL:
(save_name, '=' * done, sys.stdout.write(
float(dl / total_length * 100))) "\r%s : [%-50s]%.2f%%" %
sys.stdout.flush() (save_name, '=' * done,
float(dl / total_length * 100)))
starttime = time.time()
sys.stdout.flush()
if print_progress: if print_progress:
sys.stdout.write("\n") sys.stdout.write(
"\r%s : [%-50s]%.2f%%\n" %
(save_name, '=' * done, float(dl / total_length * 100)))
sys.stdout.flush() sys.stdout.flush()
tips = "file %s download completed!" % (file_name) tips = "file %s download completed!" % (file_name)
...@@ -107,13 +121,15 @@ class Downloader: ...@@ -107,13 +121,15 @@ class Downloader:
save_name=None, save_name=None,
retry_limit=3, retry_limit=3,
delete_file=True, delete_file=True,
print_progress=False): print_progress=False,
replace=False):
result, tips_1, file = self.download_file( result, tips_1, file = self.download_file(
url=url, url=url,
save_path=save_path, save_path=save_path,
save_name=save_name, save_name=save_name,
retry_limit=retry_limit, retry_limit=retry_limit,
print_progress=print_progress) print_progress=print_progress,
replace=replace)
if not result: if not result:
return result, tips_1, file return result, tips_1, file
result, tips_2, file = self.uncompress(file, delete_file=delete_file) result, tips_2, file = self.uncompress(file, delete_file=delete_file)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册