代码:
def Handler(start, end, url, filename): headers = {'Range': 'bytes=%d-%d' % (start, end)} with requests.get(url, headers=headers,stream=True) as r: with open(filename, "r+b") as fp: fp.seek(start) var = fp.tell() fp.write(r.content) def download(url,tittle, num_thread = 10): r = requests.head(url) try: file_name = tittle file_size = int(r.headers['content-length']) except: print("检查URL,或不支持对线程下载") return fp = open(file_name, "wb") fp.truncate(file_size) fp.close() part = file_size // num_thread for i in range(num_thread): start = part * i if i == num_thread - 1: end = file_size else: end = start + part t = threading.Thread(target=Handler, kwargs={'start': start, 'end': end, 'url': url, 'filename': file_name}) t.setDaemon(True) t.start() # 等待所有线程下载完成 main_thread = threading.current_thread() for t in threading.enumerate(): if t is main_thread: continue t.join() print('%s 下载完成' % file_name)
这个多线程要怎么使用下载呢?