Day 16 16.2 并发爬虫二、多线程实现
并发爬虫二、多线程实现
【1】threading模块
- Python提供两个模块进行多线程的操作,分别是
thread
和threading
,前者是比较低级的模块,用于更底层的操作,一般应用级别的开发不常用。
【2】互斥锁
【3】线程池
-
系统启动一个新线程的成本是比较高的,因为它涉及与操作系统的交互。
- 在这种情形下,使用线程池可以很好地提升性能,
- 尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。
-
线程池在系统启动时即创建大量空闲的线程,程序只要将一个函数提交给线程池,线程池就会启动一个空闲的线程来执行它。
- 当该函数执行结束后,该线程并不会死亡,而是再次返回到线程池中变成空闲状态,等待执行下一个函数。
-
此外,使用线程池可以有效地控制系统中并发线程的数量。
- 当系统中包含有大量的并发线程时,会导致系统性能急剧下降,甚至导致解释器崩溃,
- 而线程池的最大线程数参数可以控制系统中并发线程的数量不超过此数。
使用线程池来执行线程任务的步骤如下:
- 调用 ThreadPoolExecutor 类的构造器创建一个线程池。
- 定义一个普通函数作为线程任务。
- 调用 ThreadPoolExecutor 对象的 submit() 方法来提交线程任务。
- 当不想提交任何任务时,调用 ThreadPoolExecutor 对象的 shutdown() 方法来关闭线程池。
【4】线程应用
针对IO密集型任务,Python多线程可以发挥出不错的并发作用
__EOF__

本文作者:Chimengmeng
本文链接:https://www.cnblogs.com/dream-ze/p/17218094.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/dream-ze/p/17218094.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/17218094.html
分类:
Python爬虫JS逆向二期
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)