風火程式設計--python多執行緒下載檔案
阿新 • • 發佈:2018-11-19
多執行緒下載檔案
出現異常的執行緒會自動重新下載, 所有的進度會在同一位置輪換顯示
import os import datetime from urllib import request url_list = ["url1","url2","url3","url4"] base_path = "/download/" def download(url): print("start:", url, datetime.now()) file_name = url + '.txt' path = os.path.join(base_path, file_name) try: request.urlretrieve(url, path, callback) except: download(url) def callback(a, b, c): per = 100.0 * a * b / c # print(a, b, c) if per > 100: per = 100 print('\r%.2f%%, %d' % (per, c), end=" ") if __name__ == '__main__': print("name_list", len(url_list)) thread_list = [] for i in url_list: if url_list: url = url_list.pop(0) my_thread = Thread(target=download, args=(url,)) thread_list.append(my_thread) for my_thread in thread_list: my_thread.start() for my_thread in thread_list: my_thread.join()