Python多线程下载网络URL图片的方法

采用多线程的方法,通过URL地址,下载资源图片

GitHub地址:https://github.com/PanJinquan/python-learning-notes/blob/master/modules/multiThread/download_image.py

实现源码:

# -*-coding: utf-8 -*-
"""@Project: python-learning-notes@File   : download_image.py@Author : panjq@E-mail : pan_jinquan@163.com@Date   : 2019-06-06 15:51:05
"""import time
from multiprocessing.pool import ThreadPool
import requests
import os
import PIL.Image as Image
from io import BytesIO
import cv2
import numpy as npdef download_image(url, our_dir):'''根据url下载图片:param url::return: 返回保存的图片途径'''basename = os.path.basename(url)try:res = requests.get(url)if res.status_code == 200:print("download image successfully:{}".format(url))filename = os.path.join(our_dir, basename)with open(filename, "wb") as f:content = res.content# 使用Image解码为图片# image = Image.open(BytesIO(content))# image.show()# 使用opencv解码为图片content = np.asarray(bytearray(content), dtype="uint8")# image = cv2.imdecode(content, cv2.IMREAD_COLOR)# cv2.imshow("Image", image)# cv2.waitKey(1000)# f.write(content)# time.sleep(2)return filenameexcept Exception as e:print(e)return Noneprint("download image failed:{}".format(url))return Nonedef download_image_thread(url_list, our_dir, num_processes, remove_bad=False, Async=True):'''多线程下载图片:param url_list: image url list:param our_dir:  保存图片的路径:param num_processes: 开启线程个数:param remove_bad: 是否去除下载失败的数据:param Async:是否异步:return: 返回图片的存储地址列表'''# 开启多线程if not os.path.exists(our_dir):os.makedirs(our_dir)pool = ThreadPool(processes=num_processes)thread_list = []for image_url in url_list:if Async:out = pool.apply_async(func=download_image, args=(image_url, our_dir))  # 异步else:out = pool.apply(func=download_image, args=(image_url, our_dir))  # 同步thread_list.append(out)pool.close()pool.join()# 获取输出结果image_list = []if Async:for p in thread_list:image = p.get()  # get会阻塞image_list.append(image)else:image_list = thread_listif remove_bad:image_list = [i for i in image_list if i is not None]return image_listif __name__ == "__main__":our_dir = "./image"url_list = ["https://farm3.staticflickr.com/2334/1828778894_271415878a_o.jpg","https://farm4.staticflickr.com/3149/2355285447_290193393a_o.jpg","https://farm3.staticflickr.com/2090/1792526652_8f37410561_o.jpg","https://farm3.staticflickr.com/2099/1791684639_044827f860_o.jpg"]startTime = time.time()image_list = download_image_thread(url_list, our_dir=our_dir, num_processes=4, remove_bad=True, Async=True)endTime = time.time()consumeTime = endTime - startTimeprint("程序运行时间:" + str(consumeTime) + " 秒")print(image_list)

Python多线程下载网络URL图片的方法相关推荐

  1. python多线程下载小姐姐图片

    python多线程下载小姐姐图片 闲谈 思路 实现过程 单线程实现代码功能 问题描述 多线程处理办法 完成效果 闲谈 今日闲来无事,翻看博客,看到一篇关于python自动下载图片的文章,就萌生了也写一 ...

  2. 使用python多线程下载网络小说并结合calibre制作电子书

    之前的教程里有写过python爬取小说的代码,但如果小说字数很多,爬起来会比较耗时.此时需要结合多线程来加快爬取速度. 代码如下: import requests from lxml import e ...

  3. python多线程下载大文件_Python threading多线程断点下载文件的方法

    这是玩蛇网一篇关于Python多线程下载文件方法的代码实例.文中应用到的python模块和方法有httplib.Python urllib2.Python threading多线程模块.python ...

  4. Python 多线程下载图片

    多线程下载图片 参考链接: Python标准库-urllib和urllib3 urllib实战2–urllib基础urlretrieve().urlcleanup().info().getcode() ...

  5. [工具库]JFileDownloader工具类——多线程下载网络文件,并保存在本地

    本人大四即将毕业的准程序员(JavaSE.JavaEE.android等)一枚,小项目也做过一点,于是乎一时兴起就写了一些工具. 我会在本博客中陆续发布一些平时可能会用到的工具. 代码质量可能不是很好 ...

  6. python下载方法-python实现下载文件的三种方法_python

    本篇文章主要介绍了python实现下载文件的三种方法,最常用的方法就是通过Http利用urllib或者urllib2模块还有requests,有兴趣的可以了解一下. Python开发中时长遇到要下载文 ...

  7. python下载的文件放在哪里的-python实现下载文件的三种方法

    Python开发中时长遇到要下载文件的情况,最常用的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib从ftp站点下载文件.此外Python还提供了另外一种方法 ...

  8. python 下载文件-python实现下载文件的三种方法_python

    本篇文章主要介绍了python实现下载文件的三种方法,最常用的方法就是通过Http利用urllib或者urllib2模块还有requests,有兴趣的可以了解一下. Python开发中时长遇到要下载文 ...

  9. 将网络url图片链接转换为File类型对象

    将网络url图片链接转换为File类型对象 public static File convertFileByUrl(String url) {File file = null;URL urlfile; ...

最新文章

  1. android 获取 第三方应用,​android PackageManager的使用如何获取第三方应用程序(包)的信息,求大神指点...
  2. SqlHelper中IN集合场景下的参数处理
  3. 【NLP】GPT-3问世这一年,给世界带来的困扰与希望
  4. oracle 的行级触发器
  5. maven没有resource文件夹_maven项目中没有resource文件夹的问题
  6. 大唐豪侠服务器列表文件格式错误,[动态] 大唐豪侠1.2.4版本更新公告-大唐豪侠-东北游戏网...
  7. 三种动态创建元素区别
  8. 一个虚拟社交公司的融资历程
  9. lisp用entmake生产圆柱体_蚌埠踏步板钢盖板沟盖板生产加工厂家材质齐全-老友网...
  10. Visio文件编辑查看工具Visio Viewer for Mac
  11. IDEA 插件开发,显示气泡
  12. 睡眠时间 数据_我测试了Apple Watch睡眠追踪以节省您的时间和电池寿命
  13. 广告投放系统后台html,今日头条广告如何投放?今日头条广告后台操作说明
  14. c语言getch退出程序,用getch()时怎么样清除输入缓冲
  15. 光威猛将240固态掉盘开卡教程
  16. Mysql三种存储引擎及区别
  17. 逆势马丁网格策略交易演示
  18. Oracle Parallel Query
  19. 关于GPS模块的一些注意点,包括区分天线。
  20. 下载 Internet Explorer 11(脱机安装程序)

热门文章

  1. DedeCMS生成首页html静态文件的教程
  2. Apache-Tomcat的安装配置
  3. Android TextView 手动上下滑动
  4. 每天,每周,每月,每年程序员该做的事情
  5. Webservice初接触
  6. “并发用户数”、“系统用户数”和“同时在线用户数”的计算公式
  7. 测试站点写入文件权限代码下载
  8. git移除某文件夹的版本控制
  9. 六. 异常处理9.finally块
  10. ajax返回JSON时的处理方式