我有一个要下载的文件(从json中提取的下载路径。eg: http://testsite/abc.zip
)。
我需要一个帮助来执行,所有5个线程都应该下载" abc.zip"文件到输出目录,下载必须是异步或并发。 目前使用以下代码,它会下载文件5次,但会逐个下载(同步)。
我想要的是,下载是同步的。
任何帮助表示赞赏!!!
.
.
def dldr(file=file_url, outputdir=out1):
local_fn = str(uuid.uuid4())
if not os.path.exists(outputdir):
os.makedirs(outputdir)
s = datetime.now()
urllib.urlretrieve(file, outputdir + os.sep + local_fn)
e = datetime.now()
time_diff = e - s
logger(out1, local_fn, time_diff)
for i in range(1, 6):
t = threading.Thread(target=dldr())
t.start()
我已阅读Requests with multiple connections帖子并且提供了帮助,但并未解决所提问题的要求。
答案 0 :(得分:2)
我使用线程模块下载线程: 还请求,但您可以自己将其更改为urllib。
import threading
import requests
def download(link, filelocation):
r = requests.get(link, stream=True)
with open(filelocation, 'wb') as f:
for chunk in r.iter_content(1024):
if chunk:
f.write(chunk)
def createNewDownloadThread(link, filelocation):
download_thread = threading.Thread(target=download, args=(link,filelocation))
download_thread.start()
for i in range(0,5):
file = "C:\\test" + str(i) + ".png"
print file
createNewDownloadThread("http://stackoverflow.com/users/flair/2374517.png", file)