安装

1.tomorrow安装,用pip可以直接安装

pip install tomorrow

单线程

1。以下案例是单线程时候跑的情况,在下载图片的时候很耗时。

# coding:utf-8
from bs4 import BeautifulSoup
import requests
import os
import time # 当前脚本所在的目录
cur_path = os.path.dirname(os.path.realpath(__file__)) def get_img_urls():
r = requests.get("http://699pic.com/sousuo-218808-13-1.html")
fengjing = r.content
soup = BeautifulSoup(fengjing, "html.parser")
# 找出所有的标签
images = soup.find_all(class_="lazy")
return images def save_img(imgUrl):
try:
jpg_rl = imgUrl["data-original"]
title = imgUrl["title"]
# print(title)
# print(jpg_rl)
# print("")
# 判断是否有jpg文件夹,不存在创建一个
save_file = os.path.join(cur_path, "jpg")
if not os.path.exists(save_file): os.makedirs(save_file) with open(os.path.join(save_file, title+'.jpg'), "wb") as f:
f.write(requests.get(jpg_rl).content)
except:
pass if __name__ == "__main__":
t1 = time.time() image_ulrs = get_img_urls()
for i in image_ulrs:
save_img(i) t2 = time.time()
print("总耗时:%.2f 秒"%(t2-t1))

运行结果:

耗时:4.27 秒

使用多线程tomorrow

1.一行代码搞定多线程,在函数上加个@threads(5),括号里面代码线程的数量,数字越大,运行的速度越快

# coding:utf-8
from bs4 import BeautifulSoup
import requests
import os
import time
from tomorrow import threads # 当前脚本所在的目录
cur_path = os.path.dirname(os.path.realpath(__file__)) def get_img_urls():
r = requests.get("http://699pic.com/sousuo-218808-13-1.html")
fengjing = r.content
soup = BeautifulSoup(fengjing, "html.parser")
# 找出所有的标签
images = soup.find_all(class_="lazy")
return images @threads(5)
def save_img(imgUrl):
try:
jpg_rl = imgUrl["data-original"]
title = imgUrl["title"]
# print(title)
# print(jpg_rl)
# print("")
# 判断是否有jpg文件夹,不存在创建一个
save_file = os.path.join(cur_path, "jpg")
if not os.path.exists(save_file): os.makedirs(save_file) with open(os.path.join(save_file, title+'.jpg'), "wb") as f:
f.write(requests.get(jpg_rl).content)
except:
pass if __name__ == "__main__":
t1 = time.time() image_ulrs = get_img_urls()
for i in image_ulrs:
save_img(i) t2 = time.time()
print("总耗时:%.2f 秒"%(t2-t1))

运行结果:

总耗时:0.24 秒

参考github案例:Tomorrow

python自动化交流 QQ群:779429633

python笔记13-多线程实战篇(tomorrow)的更多相关文章

  1. Python笔记_第四篇_高阶编程_进程、线程、协程_5.GPU加速

    Numba:高性能计算的高生产率 在这篇文章中,笔者将向你介绍一个来自Anaconda的Python编译器Numba,它可以在CUDA-capable GPU或多核cpu上编译Python代码.Pyt ...

  2. [Python笔记]第十六篇:web框架之Tornado

    Tornado是一个基于python的web框架,xxxxx 安装 python -m pip install tornado 第一个Tornado程序 安装完毕我们就可以新建一个app.py文件,放 ...

  3. 【新手必学】Python爬虫之多线程实战

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:清风化煞_   正文 新手注意:如果你学习遇到问题找不到人解答,可以点 ...

  4. 《一头扎进》系列之Python+Selenium自动化测试框架实战篇6 - 价值好几K的框架,呦!这个框架还真牛叉哦!!!

    1. 简介 本文开始介绍如何通过unittest来管理和执行测试用例,这一篇主要是介绍unittest下addTest()方法来加载测试用例到测试套件中去.用addTest()方法来加载我们测试用例到 ...

  5. Python笔记_第五篇_Python数据分析基础教程_NumPy基础

    1. NumPy的基础使用涵盖如下内容: 数据类型 数组类型 类型转换 创建数组 数组索引 数组切片 改变维度 2. NumPy数组对象: NumPy中的ndarray是一个多维数组对象,该兑现共有两 ...

  6. Python笔记_第四篇_高阶编程_魔法(术)方法详解(重载的再详解)

    1. 魔法方法是什么? 魔法方法(Magic Method)是Python比较独特的应用,它可以给你的类增加特殊的方法,如果你的对象实现了(重载),这些方法中的某一个,就会被Python所调用.正如装 ...

  7. Python笔记_第四篇_高阶编程_再议装饰器和再议内置函数

    1. 概述: 我们在前面用了很多的装饰器这个工具的方法.这个位置要系统的讲一下装饰器. 1.2 为什么需要装饰器. 装饰器本质是一个Python函数,它可以让其他函数在不需要任何代码变动的前提下增加额 ...

  8. Python笔记_第三篇_面向对象_4.单下划线和双下划线

    说道这里我们需要稍微暂停一下.前面我们说到了类是作为一个对象存放容器.这个容器里面有属性和方法.最好的理解类的方式就是把类想想成一个容器. 然后构造了一个析构函数和构造函数,然后又对object和se ...

  9. python笔记-13 mysql与sqlalchemy

    一.RDBMS relational database management system 关系型数据库引入 1.数据库的意义 更有效和合理的存储读取数据的一种方式 关系模型基础上的数据库 -> ...

随机推荐

  1. Hibernate检索策略与检索方式

    hibernate的Session在加载Java对象时,一般都会把鱼这个对象相关联的其他Java对象也都加载到缓存中,以方便程序的调用.但很多情况下,我们不需要加载太多无用的对象到缓存中,一来会占用大 ...

  2. mycncart自定义主题

    本文是自己通过其他主题,自学的,如果有什么问题,可以提出建议? 参考资料:opencart官网 www.opencart.com  或 mycncart的官网上的一些教程 www.mycncart.c ...

  3. hadoop3.1 hdfs的api使用

    1.开发环境配置 1.1eclipse导入插件 1.2.配置hadoop的引用路径 window--->preference --->

  4. git学习资源合集

    git官网 Pro git 电子书,这里还有中文版,这也是官方推荐的. 再加一个廖雪峰的简明git教程.

  5. Matlab处理数据导出Paraview可读的vtk文件(二)

    由于我在用SPH方法仿真时用的是FORTRAN语言,并且没有找到直接输出vtk文件的代码,因此偷懒通过MATLAB转换一下数据. 用到的Matlab子程序可通过一下链接找到. Matlab处理数据导出 ...

  6. AC日记——[SCOI2009]游戏 bzoj 1025

    [SCOI2009]游戏 思路: 和为n的几个数最小公倍数有多少种. dp即可: 代码: #include <bits/stdc++.h> using namespace std; #de ...

  7. BC-NFS部署报错节点间磁盘wwid冲突

    1.在部署公司的BC-NFS产品时,填好IP选好磁盘后,点击“创建”,就抛出如下提示: 2.关闭虚机,再打开虚机的控制台,点击磁盘,自定义serial number 3.启动虚机,再次登陆,查看磁盘w ...

  8. CentOS7安装和配置samba

    (1)samba简介 CIFS:通用的internet文件系统,windows和unix系统之间共享文件的一种协议;客户端主要是windows:支持多节点同时挂载以及并发写入 (2)samba主配置文 ...

  9. ubuntu16.04编译安装GPAC

    参考:http://blog.csdn.net/tianlong_hust/article/details/9273875 1.获取gpac的源代码 sudo apt-get install subv ...

  10. AtCoder Regular Contest 103 Problem D Robot Arms (构造)

    题目链接  Problem D 给定$n$个坐标,然后让你构造一个长度为$m$的序列, 然后给每个坐标规定一个长度为$m$的序列,ULRD中的一个,意思是走的方向, 每次从原点出发按照这个序列方向,每 ...