python并发编程学习笔记--初识多线程 day01

2023-11-01

请求网页信息

blog_spider.py

import requests
# 生成列表
from bs4 import BeautifulSoup

urls = [
    # f"http://www.cnblogs.com/#p{page}"
    f"https://www.cnblogs.com/sitehome/p/{page}"
    for page in range(1,50+1)
]


def craw(url):
    r = requests.get(url)
    # print(url, len(r.text)
    return r.text


def parse(html):
    # class='post-item-title'
    # 定位html中a标签class为post-item-title的值
    soup = BeautifulSoup(html,'html.parser')
    links = soup.find_all("a", class_='post-item-title')
    return [(link['href'], link.get_text()) for link in links]


if __name__ == '__main__':
    for result in parse(craw(urls[2])):
        print(result)

# craw(urls[0])

multi_thread_craw.py

import threading
import time

import blog_spider


def single_thread():
    print('single_thread begin')
    for url in blog_spider.urls:
        blog_spider.craw(url)
    print('single_thread end')


def multi_thread():
    print('multi_thread begin')
    threads = []
    for url in blog_spider.urls:
        threads.append(threading.Thread(target=blog_spider.craw, args=(url,)))

    for thread in threads:
        thread.start()

    for thread in threads:
        thread.join()
    print('multi_thread end')


if __name__ == '__main__':
    start = time.time()
    single_thread()
    end = time.time()
    print("single thread cost:", end-start, 'seconds')

    start = time.time()
    multi_thread()
    end = time.time()
    print("multi thread cost:", end - start, 'seconds')

运行结果:

single_thread begin
single_thread end
single thread cost: 56.829020261764526 seconds
multi_thread begin
multi_thread end
multi thread cost: 1.360729455947876 seconds

可以看出多线程比单线程提升了约41.77倍。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python并发编程学习笔记--初识多线程 day01 的相关文章

  • Python:在列表理解本身中引用列表理解?

    这个想法刚刚出现在我的脑海中 假设您出于某种原因想要通过 Python 中的列表理解来获取列表的唯一元素 i if i in created comprehension else 0 for i in 1 2 1 2 3 1 2 0 0 3
  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 绘制方程

    我正在尝试创建一个函数 它将绘制我告诉它的任何公式 import numpy as np import matplotlib pyplot as plt def graph formula x range x np array x rang
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • Pandas:merge_asof() 对多行求和/不重复

    我正在处理两个数据集 每个数据集具有不同的关联日期 我想合并它们 但因为日期不完全匹配 我相信merge asof 是最好的方法 然而 有两件事发生merge asof 不理想的 数字重复 数字丢失 以下代码是一个示例 df a pd Da
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc

随机推荐

  • Java—包及访问权限

    包是一个文件夹 它是类的一种特殊的性质 可以更合理地管理大量的类文件 设置他人对类成员的访问权等 包的概念及使用 包的基本概念 在之前所编写的所有代码实际上都有一个问题 发现所有程序都直接保存在同一目录之中 但是 当一个大型程序由多个不同的
  • IDEA创建maven多级模块项目

    一 创建一个空项目 二 在空项目中创建模块 作为maven的parents 选择刚刚创建的空项目 并且给新模块起名字 三 设置JDK的版本 依赖方式 在pom xml文件中添加
  • antv-g2学习手册-上

    G2所构建出的图表是由一系列独立的图形元素组合而成的 数据Data 可视化最基础的部分 图形属性Attribute 负责将数据中的变量映射到图形空间 几何标记Geometry 即在图表中实际看到的图形元素 如点 线 多边形等 每个几何标记对
  • jquery ajax 回调函数里面再执行ajax函数,jQuery AJAX 和其回调函数

    1 什么是 AJAX AJAX 异步 JavaScript 和 XML Asynchronous JavaScript and XML 简短地说 在不重载整个网页的情况下 AJAX 通过后台加载数据 并在网页上进行显示 2 最基本的三个方法
  • 编程新贵——AOP,你不得不知道的事

    简介 AOP为Aspect Oriented Programming的缩写 意为 面向切面编程 也叫面向方面 可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态同意添加功能的一种技术 AOP实际是GoF设计模式的延续 设
  • Qt 子对象引用mainwindow指针的巧妙方法

    问题描述 最近在用qt开发项目的时候 有一个需要就是在子类中调用mainwindow指针 在mainwindow上显示内容 因为在mainwindow中需要生成子类的对象 所以不能在子类中引用mainwindow的头文件 这样会造成相互包含
  • viotile关键字是否重排序的实验

    起因 下面的评论中 有一个人提到 viotile的实现原理是使用了内存屏障 将new关键字语句的部分设置屏障 让还没有完成初始化的对象不能让外部读取到 而没有真正的禁止重排序 加上内存屏障后 确实能够实现在不禁止重排序的情况下 保证结果的正
  • 10个程序员可以接私活的平台和一些建议,兼职必看

    今天为大家分享一些可以接私单的平台 相信大家学习编程未来是希望成为一个软件工程师或者码农 找到好的工作 有好的发展 但是在还没有找工作之前 大家可以通过一些平台接一些兼职 一来能够赚钱 在主页保持稳定的情况下能够发展自己的副业 二来通过接项
  • 实验 :OSPF综合应用场景

    R1 interface GigabitEthernet0 0 0 ip address 12 1 1 1 255 255 255 0 interface GigabitEthernet0 0 1 interface GigabitEthe
  • ROS仿真小车模型的搭建

    sample sai robot urdf
  • Linux 高可用(HA)集群之heartbeat基于crm进行资源管理详解

    大纲 一 环境准备 二 拓扑准备 三 前提条件 四 安装相关软件 五 配置 heartbeat crm 资源管理器 六 crm资源管理器 七 crm图形界面配置详解 八 高可用集群架构回顾 九 crm配置资源 十 crm资源约束 十一 cr
  • Hyperledger Fabric Java语言Gradle 工程 链码离线安装

    需求 hyperledger fabric 分布式账本 由于其本身的特性 目前主要应用于大型国企和银行 其环境的部署一般是与外部网络隔离的 如果采用docker的部署方式 docker镜像可以通过导入即可 但是在安装和实例化的时候需要下载相
  • Leetcode:单调栈系列

    本人总结的单调栈大概有三类 求右边第一个比该元素大 小 的元素 求左边第一个比该元素大 小 的元素 求两边比该元素大 小 的元素 前两类一般是中等难度的题 完成一次单调栈即可 最后一类是困难难度 需要完成两次单调栈 进一步地 1 求右边第一
  • 二十三种设计模式第二十四篇--访问者模式(完结撒花)

    在访问者模式 Visitor Pattern 中 我们使用了一个访问者类 它改变了元素类的执行算法 通过这种方式 元素的执行算法可以随着访问者改变而改变 这种类型的设计模式属于行为型模式 根据模式 元素对象已接受访问者对象 这样访问者对象就
  • 二、树模型(3)

    GBDT 特征筛选方法 https blog csdn net yangxudong article details 53899260 GBDT 用于分类 树形结构为什么不需要归一化 因为数值缩放不影响分裂点位置 对树模型的结构不造成影响
  • 【Verilog】二、Verilog基础语法

    文章目录 前言 一 简单的Verilog知识 1 1 Verilog端口定义 1 2 Verilog的标识符 1 3 Verilog的逻辑值 1 4 Verilog的数字进制 1 5 Verilog的数据类型 1 5 1 reg型 1 5
  • 吴恩达《深度学习专项》笔记(十二):目标检测与语义分割简介 (YOLO, U-Net)

    这节课中 我们要学习计算机视觉中最重要的任务之一 目标检测任务 我们会先认识目标定位和关键点检测这两个比较简单的任务 慢慢过度到目标检测任务 之后 我们会详细学习目标检测的经典算法YOLO 最后 我们会稍微认识一下语义分割任务及适用于此问题
  • 老猿Python部分代码样例

    专栏 Python基础教程目录 专栏 使用PyQt开发图形界面Python应用 专栏 PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 PyQt编程实战 通过eventFilter监视QScrollArea的widget 的P
  • Vue3 基础语法

    文章目录 1 创建Vue项目 1 1创建项目 1 2 初始项目 2 vue3 语法 2 1 复杂写法 2 2 简易写法 2 3 reactive 对象类型 2 4 ref 简单类型 2 5 computed 计算属性 2 6 watch 监
  • python并发编程学习笔记--初识多线程 day01

    请求网页信息 blog spider py import requests 生成列表 from bs4 import BeautifulSoup urls f http www cnblogs com p page f https www