python笔记13-多线程实践篇(tomorrow)

前言

前面几篇连续讲解了多线程的一些概念,都是一些理论的东西,有了一些理论基础了,接下来就让我们把所学的知识用到实践中吧!

一、 安装

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 秒

```

多线程就是这么so easy! 一行代码就能搞定~

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-01-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏IT派

机器学习实战之Python3实现决策树算法

导语:今天这篇文章也是我们的志愿编辑写出来的文章哦,稳重介绍了如何在python3中实现自己的决策树算法并画出来!另外,小编Tom邀请你一起搞事情! 预备知识:...

58850
来自专栏数说工作室

跟你说个事儿

大家好! 数说君最近在做一个生物大数据的项目汇报,忙成狗了。 因此这段时间更新比较少, 预计下周恢复。 将继续为大家带来: SAS正则表达式、python、我自...

36270
来自专栏IT派

Python机器学习入门到进阶

导语:Python 可以说是现在最流行的机器学习语言,而且你也能在网上找到大量的资源。你现在也在考虑从 Python 入门机器学习吗?本教程或许能帮你成功上手,...

51330
来自专栏IT派

【源码】Python的开源人脸识别库:离线识别率高达99.38%

如果你觉得好的话,不妨分享到朋友圈。 以往的人脸识别主要是包括人脸图像采集、人脸识别预处理、身份确认、身份查找等技术和系统。现在人脸识别已经慢慢延伸到了ADAS...

1K60
来自专栏IT派

GitHub最流行语言:JS 还第一,Python 反超 Java

转自:开源中国 ? GitHub Universe 是 GitHub 的年度盛会,今年10月10-12日,GitHub Universe 大会在旧金山召开。同时...

39780
来自专栏IT派

干货 | PyTorch相比TensorFlow,存在哪些自身优势?

1、 PyTorch 课替代NumPy 使用:PyTorch 本身主要构件是张量——和 NumPy 看起来差不多。使得 PyTorch 可支持大量相同的 API...

2K40
来自专栏IT派

基于OpenCV的摄像头圆心计算

导语:这几天,小编学习到了一个好玩的摄像头图像圆心计算的程序代码。另外,小编Tom邀请你一起搞事情! 在这份程序代码中,小编在Python3下运行,使用到...

40950
来自专栏IT派

推荐|2017年最受数据科学欢迎的Top15个Python库!

如果你觉得好的话,不妨分享到朋友圈。 近几年Python已成为数据科学行业中大火的编程语言,我们将根据以往的经验来为大家总结一下数据科学家和工程师几个最实用的...

36140
来自专栏IT派

从零开始:手把手教你安装深度学习操作系统、驱动和各种python库!

为了研究强化学习,最近购置了一台基于 Ubuntu 和英伟达 GPU 的深度学习机器。尽管目前在网络中能找到一些环境部署指南,但目前仍然没有全面的安装说明。另外...

52780
来自专栏IT派

Python做机器学习之路

导语:Python 可以说是现在最流行的机器学习语言,而且你也能在网上找到大量的资源。你现在也在考虑从 Python 入门机器学习吗?本教程或许能帮你成功上手,...

62870

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励