Python用多线程并发访问网站服务器,测试网站并发处理效果


1.引入

最近因做的一个小程序,想测试一下,小程序抗并发能力,就用Python写了一小段代码模拟并发访问服务器,看看会怎样,结果就是小程序会很卡。

2.Python技术路线

使用了 multiprocessing.dummy 模块执行多线程并发访问。btw:dummy 模块是多线程,multiprocessing 是多进程。
multiprocessing模块要安装
在这里插入图片描述

3.代码逻辑

多线程执行请求,不管请求成功与否,请求后都继续递归,这样就持续访问服务器了

4.效果

请添加图片描述
请添加图片描述

5.代码

import random
import requests
import urllib3
import traceback
from multiprocessing.dummy import Pool

# 设置session
urllib3.disable_warnings()
requests.adapters.DEFAULT_RETRIES = 5 # 增加重连次数
session = requests.session()
session.keep_alive = False # 关闭多余连接,以免链接过多 request报错

def Req(dic):
    try:
        idx = dic["idx"]

        url = 'https://www.xxx.com/'
        # 发送get请求
        r = session.get(url=url, verify=False)
        # 递归再次访问,如此循环,所有线程都不会闲着,都会一直运行
        print(f'线程{idx}访问成功,继续递归访问')
        Req(dic)
    except Exception as e:
        print('出错了')
        # print(e)
        # traceback.print_exc()
        # 出错了,也继续递归访问
        print(f'线程{idx}访问失败,继续递归访问')
        Req(dic)

def Main():
    threadLists = []  # 线程用的列表
    threadcount = 3000 # 线程大小,看自己电脑性能分配

    pool1 = Pool(threadcount) # 线程池,threadcount个线程
    # 给列表初始化共有多少个请求 
    for i in range(1, 200000):
        threadLists.append({"idx":i})

    pool1.map(Req, threadLists)
    pool1.close()
    pool1.join()
if __name__ == "__main__":
    Main();

btw:代码功能接近多线程爬虫

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python爬虫多线程并发是指使用多个线程同时执行爬取任务,以提高爬取效率。通过并发执行,可以在同一时间内处理多个请求和响应,从而加快页的下载和解析过程。 在Python中,可以使用多种方式实现爬虫的多线程并发。其中一种常见的方式是使用`threading`模块创建线程并管理线程的执行。通过创建多个线程,每个线程负责执行一个爬取任务,可以同时进行多个任务的爬取,提高整体的效率。 另一种方式是使用线程池。线程池可以预先创建一定数量的线程,并将任务分发给这些线程进行执行。通过线程池,可以有效地管理线程的创建和销毁,避免频繁地创建和销毁线程带来的开销。 多线程并发爬取的优点包括提高爬取效率、缩短爬取时间,同时还可以更好地利用计算机的多核处理能力。然而,需要注意的是,在进行多线程并发爬取时,需要考虑线程安全性和资源竞争的问题,避免出现数据错乱或者死锁等问题。 总结来说,Python爬虫多线程并发是一种提高爬取效率的方法,通过同时执行多个爬取任务,可以加快页的下载和解析过程,从而更快地获取所需的数据。可以使用`threading`模块或线程池来实现多线程并发,但需要注意线程安全性和资源竞争的问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python并发编程相关及在爬虫实战中的使用](https://blog.csdn.net/weixin_44327634/article/details/123948849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [python并发爬虫——多线程、线程池实现](https://blog.csdn.net/sixteen_16/article/details/116176587)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘建杰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值