分享几套常用的Python多线程、进程模板,爬虫效率杠杠的!

python多线程get与post请求模板代码 post请求模板代码: #coding=utf-8 ''' random.randint(a, b):用于生成一个指定范围内的整数。 其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b random.choice(sequence):从序列中获取一个随机元素 参数sequence表示一个有序类型(列表,元组,字符串) ''' import httplib,urllib 阅读详情

多线程模板一

"""
当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢? 
学习Python中有不明白推荐加入交流Q群号:928946953 
群里有志同道合的小伙伴,互帮互助, 群里有不错的视频学习教程和PDF!
还有大牛解答!
"""
# -*- coding: utf-8 -*-
import time
from queue import Queue
from threading import Thread

class Demo(Thread):
    def __init__(self, queue):
        Thread.__init__(self)
        self.queue = queue

    def run(self):
        while True:
            q_url = self.queue.get()
            try:
                self.parse(q_url)
            finally:
                self.queue.task_done()

    def parse(self, q_url):
        print("开始解析链接:", q_url)

if __name__ == '__main__':
    start = time.time()
    base_url = 'https://www.baidu.com/{}.html'
    url_list = [base_url.format(i) for i in range(1, 201)]

    queue = Queue()

    for x in range(20):
        worker = Demo(queue)
        worker.daemon = True
        worker.start()

    for url in url_list:
        queue.put(url)

    queue.join()

    print('下载完毕耗时:{}s'.format(round(time.time() - start, 2)))

多线程模板二

 复制代码 隐藏代码
import queue
import threading

# 解析线程类
class Parse(threading.Thread):
    def __init__(self, number, data_list, req_thread):
        super(Parse, self).__init__()
        self.number = number
        self.data_list = data_list
        self.req_thread = req_thread
        self.is_parse = True  # 判断是否从数据队列里提取数据

    def run(self):
        print('启动%d号解析线程' % self.number)
        while True:
            # 如何判断解析线程的结束条件
            for t in self.req_thread:
                if t.is_alive():
                    break
            else:
                if self.data_list.qsize() == 0:
                    self.is_parse = False

            if self.is_parse:  # 解析
                try:
                    data = self.data_list.get(timeout=3)
                except Exception as e:
                    data = None
                if data is not None:
                    self.parse(data)
            else:
                break
        print('退出%d号解析线程' % self.number)

    # 页面解析函数
    def parse(self, data):
        # 下载文件
        pass

# 采集线程类
class Crawl(threading.Thread):
    def __init__(self, number, req_list, data_list):
        super(Crawl, self).__init__()
        self.number = number
        self.req_list = req_list
        self.data_list = data_list
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36'
        }

    def run(self):
        print('启动采集线程%d号' % self.number)
        while self.req_list.qsize() > 0:
            url = self.req_list.get()
            print('%d号线程采集:%s' % (self.number, url))
            # time.sleep(random.randint(1, 3))

            self.data_list.put("填充详细页面链接")  # 向数据队列里追加

def main():
    concurrent = 3
    conparse = 3

    # 生成请求队列
    req_list = queue.Queue()
    # 生成数据队列
    data_list = queue.Queue()

    # 填充请求数据
    for i in range(1, 13 + 1):
        base_url = 'https://www.baidu.com/{}.html'.format(i)
        req_list.put(base_url)

    # 生成N个采集线程
    req_thread = []
    for i in range(concurrent):
        t = Crawl(i + 1, req_list, data_list)  # 创造线程
        t.start()
        req_thread.append(t)

    # 生成N个解析线程
    parse_thread = []
    for i in range(conparse):
        t = Parse(i + 1, data_list, req_thread)  # 创造解析线程
        t.start()
        parse_thread.append(t)

    for t in req_thread:
        t.join()
    for t in parse_thread:
        t.join()

if __name__ == '__main__':
    main()

多进程模板

 复制代码 隐藏代码
import multiprocessing
import os

class ProcessClass(multiprocessing.Process):
    def __init__(self, queue):
        multiprocessing.Process.__init__(self)
        self.queue = queue

    def run(self):
        while True:
            if self.queue.empty():
                break
            else:
                item = self.queue.get()
                self.parse(item)

    def parse(self, item):
        print('[{}]号进程:{}'.format(os.getpid(), item))

def main():
    # 队列必须使用多进程的队列,使用queue模块会报错
    queue = multiprocessing.Queue()
    for i in range(20):
        queue.put(i)

    process_list = []
    process_num = 4
    for i in range(process_num):
        p = ProcessClass(queue)
        p.start()
        process_list.append(p)

    for p in process_list:
        p.join()

if __name__ == '__main__':
    main()
Python多线程编程实战示例详解 你说:“我可以用target参数指定函数啊,为啥非要继承Thread写个类?好问题!确实,你可以这样创建线程:print(f"正在下载 {url}")t.start()简洁明了,适合一次性任务。但如果这个下载任务需要:记录下载进度?支持暂停/恢复?绑定用户ID、超时时间、重试策略?提供状态查询接口?这时候你还打算全靠args和闭包传参?代码很快就会变成意大利面条🍝。 阅读详情

相关推荐

别再为PT100测温发愁了!手把手教你用ADS1247+STM32搞定高精度温度采集(附完整代码)

本文详细介绍了如何使用ADS1247与STM32构建高精度PT100测温系统,涵盖硬件设计、SPI配置、温度计算及调试技巧。通过24位ADC和内置PGA,实现0.1℃级精度,适用于工业自动化和医疗设备。附完整代码和常见问题解决方案,助你快速掌握高精度温度采集技术。

weixin_42524703的博客 344

分享几套常用的Python多线程、进程模板,爬虫效率杠杠的

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

WANGJUNAIJIAO的博客 218

SO逆向入门实战教程一:OASIS

文章目录一、前言二、准备三、Unidbg模拟执行四、ExAndroidNativeEmu 模拟执行五、算法分析六、尾声 一、前言 这是SO逆向入门实战教程的第一篇,总共会有十三篇,十三个实战。有以下几个注意点: 主打入门级的实战,适合有一定基础但缺少实战的朋友(了解JNI,也上过一些Native层逆向的课,但感觉实战匮乏,想要壮壮胆,入入门)。 侧重新工具、新思路、新方法的使用,算法分析的常见路子是Frida Hook + IDA ,在本系列中,会淡化Frida 的作用,采用Unidbg Hook + .

lilac的博客 2万+

python多线程模板

【代码】python多线程模板。

jh__chen的博客 262

AI辅助游戏开发实战:Kimi K3提升Unity开发效率与代码质量

在游戏开发领域,有限状态机(FSM)是构建角色AI行为逻辑的核心设计模式,它通过定义明确的状态和转换条件,使游戏实体能够智能地响应环境变化。其原理在于将复杂的行为分解为离散的状态节点,并通过事件驱动状态切换,从而实现清晰、可维护的AI架构。这项技术的价值在于显著提升了游戏角色的行为真实感和开发效率,被广泛应用于NPC行为控制、角色动画管理、UI流程等场景。随着AI编程助手的兴起,开发者现在可以借助如Kimi K3这类工具,通过自然语言指令快速生成和优化FSM等复杂系统的代码框架,将更多精力投入到核心玩法与性

weixin_30430677的博客 408

VMware虚拟机安装MS-DOS 7.10教程

dos安装教程dos版本7.10附下载链接。

Minecraft_xiaole的博客 1万+

python使用多线程模板

python使用多线程模板

yilvyangguang520的博客 330

K8S部署Java项目(Gitlab CI/CD自动化部署终极版)

每个人都有惰性,但不断学习是好好生活的根本,共勉!

感谢阅读 6954

php多携程爬虫框架,分享几套本人常用的多线程(进程)模板 爬虫效率杠杠的

多线程模板一# -*- coding: utf-8 -*-import timefrom queue import Queuefrom threading import Threadclass Demo(Thread):def __init__(self, queue):Thread.__init__(self)self.queue = queuedef run(self):while True:...

weixin_39811478的博客 163

【服务器电源架构与关键技术发展趋势】AI数据中心迅猛发展,服务器电源如何演变?

功率级跃升:机柜功率从 100kW 向 1MW 级发展,供电架构采用 HVDC + 固态变压器(SST),省去传统 UPS、PFC 环节; 母线电压升级:从 48V 向 400V→800V 演进,配套 AI 电弧检测、智能运维解决高压安全与维护难题; 能效(PUE)提升:目标 PUE<1.3,通过液冷 CDU 替代传统风冷,可将 PUE 降至 1.16(传统 AI 集群 PUE 达 1.6); 拓扑控制复杂化:功率拓扑从单相→三相、单级→多交错结构,适配高功率需求; 安全维度扩展:新增网络安全防护需求。

昔时扬尘处 1451

【Bluetooth|蓝牙开发】二、蓝牙开发入门

蓝牙,是一种利用低功率无线电,支持设备短距离通信的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换,蓝牙工作在全球通用的2.4GHz ISM(即工业、科学、医学)频段,使用IEEE802.11协议。

Donge's Blog 1万+

【多线程 python】多线程模板

类用多线程 普通用多线程 import threading import time def thread1(): print('thread1 id ',threading.get_ident()) time.sleep(2) print('---子线程1结束---') def thread2(): print('thread2 id ',threading.get_ident()) time.sleep(2) print('---子线程2结束---')

qianmin12345678的博客 280

反应动力学仿真软件:Kintecus_(3).Kintecus安装与配置

在本节中,我们将详细介绍如何安装和配置Kintecus反应动力学仿真软件。Kintecus是一款功能强大的工具,用于模拟和分析化学反应的动力学过程。正确安装和配置软件是开始使用它的第一步。我们将分步骤介绍软件的安装过程,并提供一些基本配置的示例。

kkchenjj的博客 1553

多任务——进程

多任务 多任务:操作系统可以同时运行多个任务 并行:任务数小于cpu核数,任务一起执行 并发:任务数多于cpu核数,通过操作系统的各种任务调度算法,实现多个任务一起执行 进程 进程:操作系统分配资源和调度的单位,是一个执行中的程序,是资源分配最小单位 进程的创建:multiprocessing模块就是跨平台版本的多进程模块,提供了一个Process类来创建进程对象 fr...

weixin_30765505的博客 274

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

多进程和多线程以及协程的创建模板

【一】开启多进程的创建模板(基于Process模块) 【1】方式一:创建多进程 import multiprocessing def worker(n): """子进程要执行的任务""" print(f'子进程 {n} 正在执行') def main(): task_lists = [] for i in range(100) # 创建一...

Chimengmeng的博客 190

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Python多进程代码模板示例

多进程代码模板,示例

zizle_lin的博客 262

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

python3爬虫多线程_python3 多线程爬虫模板

1 import threading #多线程模块2 import queue #队列模块3 importrequests4 from lxml importetree5 importtime6 importrandom7 importjson89 concurrent = 3 #采集线程数10 conparse = 3 #解析线程111213 class Parse(threading....

weixin_39532628的博客 247

Python的多线程爬虫详解

Python 提供了两个支持多线程的模块,分别是 _thread 和 threading。其中 _thread 模块偏底层,它相比于 threading 模块功能有限,因此推荐大家使用 threading 模块。

Python966的博客 4395

Python爬虫编程7——多线程爬虫

目录 一.多线程基本介绍 程序中模拟多任务 二.多线程的创建 三.主线程与子线程的执行关系 四.查看线程数量 五.线程间的通信(多线程共享全局变量) 六.线程间的资源竞争 互斥锁和死锁 互斥锁 死锁 七.Queue线程 八.生产者和消费者 Lock版的生产者和消费者 Condition版的生产者和消费者 九.多线程的应用实例 爬取小米商城使用普通方式爬取 使用多线程爬取 一.多线程基本介绍 有很多场景中的事情是同时进行的,比如开车的时候手和脚来共同驾驶汽车,再比如唱

qq_52914337的博客 3086

【Python3.6爬虫学习记录】(十四)多线程爬虫模板总结

一 多线程Threading模块 1-1 简单的函数创建多线程 2-1 用类包装线程对象 二 多线程Queue模块 2-1 使用Queue 与 Threading模块 三 多进程并发模块 3-1 Queue 与 Threading实现并发 3-2 multiprocessing模块实现并发

子耶 2235

python 多线程模板

1 #多线程模板 2 import threading 3 class A(threading.Thread): 4 def __init__(self): 5 threading.Thread.__init__(self) 6 def run(self): 7 for i in range(0,10): 8 ...

weixin_30699463的博客 310

python爬虫之多线程模板(例:泛见志)

# __author: han-zhang # date: 2019/8/19 16:13 # page_queue、data_queue、多线程 from queue import Queue import threading import requests from bs4 import BeautifulSoup import time,re,json class CrawlT...

iplaypy(蟒蛇师) 467

python 进程池模板

from multiprocessing import Pool import time def getDataPre(): threadnum_total = 5 threadnum = threadnum_total pool = Pool(processes=threadnum_total) # 给每个线程进行标记,并调用多进程执行的函数 whil...

一个技术迷的博客 312

八个好用的Python爬虫技巧

总结八个好用的Python爬虫技巧 python应用最多的场景还是web快速开发、爬虫、自动化运维:写过简单网站、写过自动发帖脚本、写过收发邮件脚本、写过简单验证码识别脚本。 爬虫在开发过程中也有很多复用的过程,这里总结一下,以后也能省些事情。 1、基本抓取网页 get方法 post方法 在这里还是要推荐下我自己建的Python开发学习裙:304 零五零 799,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件.

csh2388827741的博客 296
上一篇: 各路Python大佬都在用Pycharm背景图,再不用就out了
下一篇: LPL比赛数据可视化,完成这个项目,用尽了我的所有Python知识
Python编程_可乐
博客等级 码龄6年 917粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值