【新手可学】关于Python多线程搜索

简介: 【新手可学】关于Python多线程搜索

我也不太清楚掘金有没有相关文章。先暂时写下来吧。因项目需求,被迫学习python。主要是爬取某网站的搜索结果。然后提取某些信息。

阅读须知: 新手总结 错误颇多 请勿较真 欢迎指出

阅读须知: 新手总结 错误颇多 请勿较真 欢迎指出

阅读须知: 新手总结 错误颇多 请勿较真 欢迎指出


因为涉及数据量大,词库多,不得已使用多线程搜索,先看成果吧。

微信图片_20230321174356.png

用时4.12秒的程序是单线程,搜索了1个词,2页内容。

用时5.3秒的程序是多线程,搜索了6个词,每个词2页内容。

提升了至少480%的效率吧。接下来简单分析下代码。

python 提供了多种 模块 用来支持多线程编程 , 其中就包含queuethreading 两个区别我就不过多介绍,我也是新手,没看太多资料。我这里用的是后者。

词库

首先我们定义一个数组,也可以是后端的词库。

data_list  = ['汽车', '小说', '罗马是什么',' 游标对象','花开花落英文单词是什么','关于 db conference 的含义']

单个查询处理

这个时候继续下一步,定义函数用于处理每个查询。

# 定义函数用于处理每个查询
def process_query(query):
    # 在这里放置您的代码,用于处理每个查询
    #......
    pass

上面放置单线程写的代码即可。

执行查询

# 定义函数用于执行查询
def run_queries(query_list):
    threads = []
    for query in query_list:
        thread = threading.Thread(target=process_query, args=(query,))
        threads.append(thread)
        thread.start()

    # 等待所有线程完成
    for thread in threads:
        thread.join()

# 执行查询
run_queries(data_list)

这样一个最简单的多线程就做好了。后期需要改的地方也很多,这只是便于新手理解的方案。如果使用Queue的话,针对大数据量查询是很占优势的,不过他所使用的时间大部分都用于推出线程上了。

最后可以通过 以下代码,把它们分别放到代码头部和尾部进行计算时间。

import time
start_time = time.time()


end_time = time.time()
print("爬取时间为:{}秒".format(end_time - start_time))

此教程同步到 我的笔记

相关文章
|
7天前
|
大数据 UED 开发者
实战演练:利用Python的Trie树优化搜索算法,性能飙升不是梦!
在数据密集型应用中,高效搜索算法至关重要。Trie树(前缀树/字典树)通过优化字符串处理和搜索效率成为理想选择。本文通过Python实战演示Trie树构建与应用,显著提升搜索性能。Trie树利用公共前缀减少查询时间,支持快速插入、删除和搜索。以下为简单示例代码,展示如何构建及使用Trie树进行搜索与前缀匹配,适用于自动补全、拼写检查等场景,助力提升应用性能与用户体验。
21 2
|
6天前
|
Python
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
|
9天前
|
负载均衡 Java 调度
探索Python的并发编程:线程与进程的比较与应用
本文旨在深入探讨Python中的并发编程,重点比较线程与进程的异同、适用场景及实现方法。通过分析GIL对线程并发的影响,以及进程间通信的成本,我们将揭示何时选择线程或进程更为合理。同时,文章将提供实用的代码示例,帮助读者更好地理解并运用这些概念,以提升多任务处理的效率和性能。
|
2月前
|
数据采集 存储 安全
如何确保Python Queue的线程和进程安全性:使用锁的技巧
本文探讨了在Python爬虫技术中使用锁来保障Queue(队列)的线程和进程安全性。通过分析`queue.Queue`及`multiprocessing.Queue`的基本线程与进程安全特性,文章指出在特定场景下使用锁的重要性。文中还提供了一个综合示例,该示例利用亿牛云爬虫代理服务、多线程技术和锁机制,实现了高效且安全的网页数据采集流程。示例涵盖了代理IP、User-Agent和Cookie的设置,以及如何使用BeautifulSoup解析HTML内容并将其保存为文档。通过这种方式,不仅提高了数据采集效率,还有效避免了并发环境下的数据竞争问题。
如何确保Python Queue的线程和进程安全性:使用锁的技巧
|
25天前
|
API Python
探索Python中的多线程编程
探索Python中的多线程编程
39 5
|
3天前
|
数据采集 Linux 调度
Python之多线程与多进程
Python之多线程与多进程
10 0
|
4天前
|
并行计算 关系型数据库 MySQL
30天拿下Python之使用多线程
30天拿下Python之使用多线程
14 0
|
8天前
|
存储 算法 Java
关于python3的一些理解(装饰器、垃圾回收、进程线程协程、全局解释器锁等)
该文章深入探讨了Python3中的多个重要概念,包括装饰器的工作原理、垃圾回收机制、进程与线程的区别及全局解释器锁(GIL)的影响等,并提供了详细的解释与示例代码。
15 0
|
8天前
|
安全 Java 调度
python3多线程实战(python3经典编程案例)
该文章提供了Python3中多线程的应用实例,展示了如何利用Python的threading模块来创建和管理线程,以实现并发执行任务。
12 0
|
2月前
|
调度 Python
Python 中如何实现多线程?
【8月更文挑战第29天】
52 6
下一篇
无影云桌面