首页 > 编程语言 >如何使用 Python 编程进行多线程并发?

如何使用 Python 编程进行多线程并发?

时间:2023-02-10 11:14:30浏览次数:44  
标签:write re Python 编程 content url html 多线程

当单线程python爬虫已经不能满足企业需求时,很多程序员会进行改代码或者增加服务器数量,这样虽说也能达到效果,但是对于人力物力也是一笔不小的消耗。如果是技术牛点的,正常都会自己重新改写多线程代码来实现海量数据的获取。下面就是有关python多线程的代码示例。 前期准备 python3、正则表达式库 re、多线程库 multiprocessing 、和第三方库 requests 。安装到这里就差不多了。 引入库

import requests
import re
from multiprocessing.dummy import Pool
多线程 到底什么是多线程?说起多线程我们首先从单线程来说。例如,我在这里看书,等这件事情干完,我就再去听音乐。对于这两件事情来说都是属于单线程,是一个完成了再接着完成下一个。但是我一般看书一边听歌,同时进行,这个就属于多线程了。 之前文章中是一页一页的爬。现在我们把他改成三页三页的爬(可以更加需求添加爬取页数)。 python是如何使用多线程的
# 创建三个线程
pool = Pool(3);
# 爬取的页码放在一个列表里 [1,2,3,...,9]
orign_num = [x for x in range(1,10)];
# 通过映射返回结果列表
result = pool.map(scrapy,orign_num);
pool.map 是使用了映射,把 orign_num 里的每一个数值传给 scrapy ,并返回到对应的结果里。 爬取一页的代码示例
regex = r"<a href=\"(.*)\">[\s]*?<h2 class=\"post-title\">[\s]*(.*)[\s]*</h2>[\s\S]*?</a>"
def scrapy(index):
page_url = '';
if index>1:
page_url=f'page{index}/'
url=f'Page not found · GitHub Pages';
html=requests.get(url);
if html.status_code == 200:
html_bytes=html.content;
html_str=html_bytes.decode();
all_items=re.findall(regex,html_str);
write_content=''
for item in all_items:
write_content=f'{write_content}\n{item[1]}\nhttp://lamyoung.com{item[0]}\n'
return write_content
else:
return ''
把结果给存起来
write_content = '';
for c in result:
write_content+=c;
with open('lamyoung_title_multi_out.txt','w',encoding='utf-8') as f:
f.write(write_content)
我们这次多线程用到的是 multiprocessing.dummy 里的 Pool 。利用map 映射出每一页的爬虫结果。

标签:write,re,Python,编程,content,url,html,多线程
From: https://www.cnblogs.com/q-q56731526/p/17108227.html

相关文章

  • Python从0到1丨图像增强及运算:形态学开运算、闭运算和梯度运算
    摘要:本文主要介绍图像形态学处理,详细讲解了图像开运算、闭运算和梯度运算。数学形态学是一种应用于图像处理和模式识别领域的新方法,其基本思想是用具有一定形态的结构元素......
  • Linux线程编程(3)
    1.线程简介线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以......
  • 软件测试|Python操作Excel制作报表,不要太方便
    前言今天我们介绍的是Python操作Excel制作报表,我们需要用到的库是openpyxl,我们主要使用的功能有下列几个功能插入与查询数据分类数据统计数据可视化字体颜色修改基本操作表......
  • Python从0到1丨图像增强及运算:形态学开运算、闭运算和梯度运算
    摘要:本文主要介绍图像形态学处理,详细讲解了图像开运算、闭运算和梯度运算。数学形态学是一种应用于图像处理和模式识别领域的新方法,其基本思想是用具有一定形态的结构元素去......
  • python文件对比
    文件对比是否一致,我们一般采用md5值对比,假如一样,代表文件一致,不一样说明不一致假如想要详细的对比信息内容,difflib库提供了文件对比的详细信息和结果1、首先我们查......
  • 00_learn_python
    https://gitee.com/yooome/golang/tree/main百度网盘资源搜索http://www.panmeme.com/Youcanuseittodebugyourhomeworkassignmentsandasasupplementtoonl......
  • python高级进阶 一切皆对象
    1.函数可以被赋值  2.类可以被赋值  3.对象可以传递给列表  4.函数当成返回值 ......
  • python模块的name属性
    一个模块被另一个程序第一次引入时,其主程序将运行。1、如果想在模块被引入时,模块中的某一程序块不执行,可以用name属性来使该程序块仅在该模块自身运行时执行。2、每个模块都......
  • 使用 Python 开发桌面应用程序的最佳方法是什么?
    Python是一种通用编程语言,可用于各种任务,包括Web开发、数据分析和机器学习。它的最大优点之一是它还可用于创建桌面应用程序。在本文中,我们将深入探讨使用Python开发......
  • 第二十二天python3 classmethod、staticmethod、property装饰器学习笔记
    classmethod1、在类定义中,使用@classmethod装饰器修饰的方法;2、必须至少有一个参数,且第一个参数留给了cls,cls指代调用者即类对象自身;3、cls这个标识符可以是任意合法名......