Python_玩转多线程_一蓑烟雨任平生

Python解决反爬机制_滑块解锁的思路以及踩的坑+心得_一蓑烟雨任平生 文章目录前言一、下载滑块与背景图二、对比像素算出距离三、模仿人为滑动破解总结 前言 网上的的滑块解锁图形,五花八门,十个里面九个瘫,步步都是坑 一、下载滑块与背景图 二、对比像素算出距离 三、模仿人为滑动破解 总结 ... 阅读详情

玩转Python多线程



前言

很久不写博客了,但是看着粉丝和点赞数的增多,感觉也不能废弃我的博客哈,随便写点多线程的东西好了

在这里插入图片描述

多线程就是多个人干同个事,效率翻倍,你1个人吃一锅饭要1小时,10个人吃一锅饭可能就6分钟,缩短时间降低成本


当然可以看我之前那篇用队列来使用线程
点这里看往期回顾


一、线程池

python3内置的有Threadingpool和ThreadPoolExecutor模块,两个都可以做线程池,当然ThreadPoolExecutor会更好用一些,而且也有ProcessPoolExecutor进程池模块,使用方法基本一致。


二、使用步骤

1.引入库

代码如下:

from concurrent.futures imoprt ThreadPoolExecutor

2.测试时间

在这里插入图片描述

在这里插入图片描述

结论

使用线程池确实效率高了很多,这是测试打印数字,循环比较简单,实战中的计算远远不止几毫秒这么少

实战一下下

根据时间遍历视频地址60*600=36000这个循环要循环将近四万次,如果不使用线程,跟使用线程,差距就大了

不使用线程

在这里插入图片描述

使用线程

# -*- coding: utf-8 -*-
"""
@Time : 2022/9/6 12:46
@Auth : 一蓑烟雨任平生
@File :xiancheng.py
@IDE :PyCharm
@Motto:ABC(Always Be Coding)

"""
from concurrent.futures import ThreadPoolExecutor
from datetime import datetime
import requests
from future.backports.datetime import timedelta


def getStartTime(startTime):
    date_1 = datetime.strptime(startTime, "%Y-%m-%d-%H:%M:%S")  # 将字符串转换为时间格式
    date_start = date_1 + timedelta(seconds=1)
    date_start = date_start.strftime("%Y-%m-%d-%H:%M:%S")
    return date_start


def getEndTime(endTime):
    # date_1 = datetime.now()  # 将字符串转换为时间格式
    date_1 = datetime.strptime(endTime, "%Y-%m-%d-%H:%M:%S")  # 将字符串转换为时间格式
    date_start = date_1 + timedelta(seconds=1)
    date_start = date_start.strftime("%Y-%m-%d-%H:%M:%S")
    return date_start


def getCode(A, startTime, endTime):
    for B in range(600):  # 内层循环10分钟
        NUM = A * 600 + B + 1
        print(f'第{NUM}次验证,开始时间为{startTime},结束时间为{endTime}')
        r = requests.get(
            'http://v-replay-tx.cdn.huya.com/record/huyalive/1199578963347-1199578963347-5510819979982798848'
            f'-2399158050150-10057-A-0-1/{startTime}_{endTime}.m3u8')
        if r.status_code != 200:
            # 结束时间+1秒 然后继续循环
            endTime = getEndTime(endTime)
            continue
        else:
            print("这是正确地址:")
            print('http://v-replay-tx.cdn.huya.com/record/huyalive/1199578963347-1199578963347-5510819979982798848'
                  f'-2399158050150-10057-A-0-1/{startTime}_{endTime}.m3u8')
            break


if __name__ == '__main__':
    num = 10
    startTime = "2022-08-29-01:36:00"
    endTime = "2022-08-29-03:52:00"
    with ThreadPoolExecutor(max_workers=num) as executor:
        for A in range(60):  # 外层循环一分钟
            executor.submit(getCode, A, startTime, endTime);
            startTime = getStartTime(startTime)
            endTime = "2022-08-29-03:52:00"
        print(f"\n---------------------------{num}条线程已启动----------------------------------\n")

在这里插入图片描述

十条线程,第一个线程只需要从1-600执行完就可以了,第二个线程从601-1200执行完就可以了,以此类推,时间是不是缩短了十倍???


总结

一名喜欢研究Python的Java程序猿( ̄▽ ̄)"

在这里插入图片描述

惠农网_破译反爬虫_使用代理IP爬取数据(源码)_一蓑烟雨任平生 费话不多说直接上代码 今天要倒霉的网站是www.cnhnb.com import requests from bs4 import BeautifulSoup # 用来解析网页 import uuid import pymysql import time # 导入时间隔 import random from fake_useragent import UserAgent cookk = { 'Cookie': 'sessionId=S_0KHA8RH66NM124OL; Hm_lvt_91cf 阅读详情

相关推荐

借助乐玩图色脚本多线程例子-易语言

本源码调用了 【乐玩】+【鱼刺多线程】! 因为本人写post习惯用鱼刺了,所以,索性就写了个图色调用鱼刺的写法!,我只能说,我运行的时候极其稳定,,我的写法也不一定是最好的,希望各位能够研究出更好的!

511遇见易语言乐玩多线程模块(索引)程序集模块–方法4

本课视频时本套视频的最后一课,只是多线程模块的不同,我们强烈建议采用一个乐玩单线程类模块来实现多线程,因为我们封装一个带有索引的多线程模块是很费时间的,希望本套视频对喜欢乐玩插件,多线程调用乐玩插件的朋友有所帮助。 乐玩多线程模块源码: .版本 2 .程序集 集多线程 .子程序 乐玩创建, 逻辑型, 公开 .参数 索引 返回 (lw [索引].创建 ()) .子程序 乐玩释放, , 公开 .参数 索引 lw [索引].乐玩释放 () .子程序 ver, 文本型, 公开 .参数 索引 返回

511遇见 6013

【OpenCV】手眼标定实战:从原理到calibrateHandEye的完整实现

本文详细解析了机器人视觉中的手眼标定原理与实战,重点介绍了如何使用OpenCV的calibrateHandEye函数实现从数据采集到结果验证的完整流程。文章深入剖析了AX=XB核心方程,区分了眼在手上与眼在手外两种配置,并提供了详细的代码示例与避坑指南,帮助开发者精准建立相机与机械臂末端的坐标转换关系,是机器人精准抓取的关键技术。

weixin_29046611的博客 507

511遇见易语言乐玩插件多线程后台绑定多窗口-方法1

从第13课开时,我们将要使用四种方法来实现乐玩插件的多线程绑定实战,采用《剑侠情缘》这款游戏,我们首先要获取所有游戏窗口的句柄,其次一次创建同样的乐玩创建对象,依次绑定,然后启动主线程。 乐玩多线程流程 ---1、必须获取所有的游戏窗口句柄(API) ---2、创建相应的乐玩对象 ---3、分别后台绑定窗口 ---4、启动线程(两种命令) 需要把之前的模块做一点点改动,原来我们把创建乐玩对象,放在了初始化里,这里我们要单独。 ----5、开几个游戏,就把数组声明几个 乐玩多线程游戏调用源码:

511遇见 1万+

OpenHarmony 4.1/5.0 Beta上手:如何用ArkUI在非华为设备上开发你的第一个“鸿蒙”应用

本文详细介绍了如何在非华为设备上使用ArkUI开发OpenHarmony应用,涵盖从设备选型、环境搭建到应用部署的全流程。通过实战案例展示ArkTS语言在开源鸿蒙生态中的应用,帮助开发者突破设备限制,构建跨平台鸿蒙应用。

weixin_33704234的博客 362

上、下拉电阻(定义、强弱上拉、常见作用、吸电流、拉电流、灌电流)

1.上、下拉电阻定义 上拉电阻是把一个信号通过一个电阻接到电源(Vcc),下拉电阻是一个信号通过一个电阻接到地(GND)。 2.强上拉、弱上拉 强上拉、弱上拉的强弱只是上拉电阻的阻值不同,没有什么严格区分。例如:50Ω上拉,一般成为强上拉;100kΩ上拉则称为弱上拉。下拉也是一样的。强拉电阻的极端就是0Ω电阻,即将信号线直接与电源或低相连接。 3.上、下拉电阻的作用 因为上下拉电阻的作用概念很宽泛,不用领域的使用方法也不同,常见使用方法整理如下: ...

小浪宝宝的博客 3万+

511遇见易语言乐玩插件多线程模块(索引)–方法3

前两课程的多线程,我们都是采用了乐玩插件的单线程类模块,在程序集里把乐玩变量声明成数组,而本课我们需要单独封装开一个乐玩多线程程序集模块,含有索引,这里又有两种方法,第一种在程序集里释放乐玩插件,第二种依赖于类单线程模块。本课视频时在程序集单独释放乐玩插件。 乐玩插件多线程模块源码: .版本 2 .程序集 集多线程 .程序集变量 obj, 对象, , "100" .子程序 乐玩释放, , 公开, 每个辅助释放一次就可以,不需要加索引 .局部变量 DLL路径, 文本型 DLL路径 = 取运行目录

511遇见 6832

ANSYS APDL生死单元实战:焊接模拟从入门到精通(附完整命令流)

本文详细介绍了使用ANSYS APDL进行焊接模拟的核心技术——生死单元法。通过一个完整的平板对接焊案例,从原理剖析、模型搭建、命令流编写到移动热源施加和后处理,手把手指导工程师掌握这一动态仿真方法,有效预测焊接过程中的温度场、残余应力与变形。

k6l7m8n9的博客 150

易语言封装调用乐玩多线程插件模块

,乐玩插件和大漠图色插件几乎完全相同,最主要的是乐玩目前是完全免费的,易语言调用乐玩插件,乐玩插件模块的制作,封装了后台绑定判断,键鼠图色窗口文本输入等游戏辅助常用的方法,每种方法都做了游戏调用测试示范,最后录制了四种多线程方法调用乐玩插件,并通过游戏进行了演示。 课程目录: 1-易语言注册调用乐玩插件类模块封装 2-乐玩获取窗口句柄后台模式判断及绑定 3-乐玩插件鼠标移动左键点击找色 4-乐玩插件FindColorEx找色扩展 5-乐玩插件FindMultiColor找色多点及找色块 6-乐.

511遇见 2万+

HEVC/VVC中R-Lambda码率控制算法原理

文章目录1. 比特分配1.1 GOP级比特分配1.2 帧级比特分配1.3 LCU级比特分配2. 码率控制2.1 λ的计算和更新2.2 参数QP的确定 VVC中码率控制算法沿用了HEVC中经典的R-λ码率控制模型,R-λ由中科大的李斌博士提出(详情参考JCTVC-K0103)。R-λ模型的基础为视频编码中 R(比特 bpp)和 D(失真 MSE)之间的双曲线模型,即 D(R)=CR−KD(R) = ...

Aidoneus_y 6136

SAR成像概述

1. 发展概述 雷达是英文Radar(Radio detection and ranging)的音译,原意为“无线电探测与测距”。雷达的发明是无线电发展史上的里程碑,二战时,英国急需通过雷达探测空中金属物体来帮助搜寻德国飞机,这期间,雷达技术飞速发展,发展出了地对空、空对地轰炸、空对空火控、敌我识别等功能。雷达在第二次世界大战中发挥了重大作用,至今仍是军用和许多民用领域的重要传感器。 早期雷达系统通过时间延迟来测距,通过天线指向来测角,通过多普勒频移测速。1951年,Carl Wiley发现,通..

5068

Python_爬虫_多线程入门_一蓑烟雨任平生

文章目录前言一、基础知识二、Demo代码总结 前言 使用这篇Dome的代码可以入门多线程 一、基础知识 1.python多线程 生产者与消费者模式官方文档:17.1. threading — 基于线程的并行点这里 两个案例参考:用Python多线程实现生产者消费者模式点这里 python-多线程3-生产者消费者点这里 2.@property 装饰器既要保护类的封装特性,又要让开发者可以使用“对象.属性”的方式操作操作类属性,除了使用 property() 函数,Python 还提供了 @property

Jaeger_Java的博客 473

PCL Trimmed ICP实现点云精配准【2025最新版】

博客长期更新,本文最新更新时间为:2025年6月25日。抄袭狗记得来抄最新代码哦,抄都抄成错的,不够丢人钱。

点云侠的博客 37万+

Python图片下载器(单线程PK多线程)_一蓑烟雨任平生

文章目录前言一、有编程基础的看这个二、没编程基础的看这个总结 前言 最近电脑总是弹出少儿不宜网站,关了,过两天又出来,我真的受不了了,那就盘它好了,本博客分两部分,针对小白一份源码,针对不会编程的人群一份exe,双击就可以了 一、有编程基础的看这个 # 爬取妹子图全网妹子图片,可以选择爬取年份,自动分类保存 import requests, os, time import urllib3 # 这个纯粹防止warning提示,没啥作用 import easygui urllib3.disable_war

Jaeger_Java的博客 1921

UniRx之基本语法格式

想要更好的去学习UniRx,我们最好是先理解UniRx 的语法格式。就像我们去学习英语或者汉语一样,理解了基本的语法规则后,再学其他的就信手拈来了。

TxNet 924

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

多线程的两种书写方法

有两种方法可以书写多线程 第一种是继承线程类,重写Run方法,如代码所示 一定要在主线程创建对象,然后去实现start方法,这样才能多线程输出 public class ThreadTest02 { public static void main(String[] args) { Thread mt = new myThread2(); Thread.currentThread().setName("main"); mt.setName("t1");

zhinaijiangya的博客 1336

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

面试题:常见的多线程实战手撕代码(顺序打印数字、字母)

问题一:   一个多线程的问题,用三个线程,顺序打印字母A-Z,输出结果是1A 2B 3C 1D 2E…打印完毕最后输出一个Ok。 代码一: public class forCharacter { private static char c = 'A'; private static int i = 0; public static void main(Strin...

ZhangRui的博客 4263

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【python3】python实现多线程(简单操作)

大家在使用python开发或测试中,难免会用到python的多线程操作,下面我就来简单介绍一下多线程的2种基本的实现方法: 【说明】: (1)在多线程中我们需要使用的第三方库是threading; (2)线程必须依附于进程使用; (3)线程执行完毕后会自动释放。 方法一:面向对象的方法实现多线程 # -*- coding: utf-8 -*- import threading class CThread (threading.Thread): def __init__(self, n):

测试开发自动化 3万+

Python爬虫_宅男福利?妹纸勿点__一蓑烟雨任平生

咳咳直接上代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020/12/15 19:10 # @Author : huni # @File : 图库大全1000.py # @Software: PyCharm import requests from lxml import etree import os if __name__ == '__main__': headers = { 'User-A

Jaeger_Java的博客 1万+

Python获取昨天日期&datetime&timedelta&strftime()用法——一蓑烟雨任平生

笔记 def getYesterday(): # 获取昨天日期的字符串格式的函数 #获取今天的日期 today = datetime.date.today() #获取一天的日期格式数据 oneday = datetime.timedelta(days=1) #昨天等于今天减去一天 yesterday = today - oneday #获取昨天日期的格式化字符串 yesterdaystr = yesterday.strftime('%Y-%m-%d')

Jaeger_Java的博客 6823

Python爬取彼岸图网10万张高清图片(入门级爬虫)_一蓑烟雨任平生

来张爬取的美女镇楼 先上代码,再给你讲解 import re import requests import os import easygui (min, max) = easygui.multenterbox(fields=['起始数', '终止数'], values=['1', '100']) min = int(min) max = int(max) if os.path.exists('zhiwei'): os.chdir('zhiwei') else: os.mkdir('z

Jaeger_Java的博客 2188

Python两种获取cookie方法以及拼接cookie_一蓑烟雨任平生

文章目录前言cookie有什么用呢?下面两种法介绍获取网页Cookieselenium获取cookie后进行组装requests获取cookie总结 前言 cookie有什么用呢? 我的理解就是保持登录状态,有时候爬取网页不需要输入账号密码,就是因为携带了cookie 下面两种法介绍获取网页Cookie selenium获取cookie后进行组装 cookie = driver.get_cookies() pp = '' for i, key in enumerate(cookie[0]):

Jaeger_Java的博客 2058

惠农网_爬取二级网页内容(源码)_一蓑烟雨任平生

废话不多说,直接上代码 今天倒霉的网站是惠农网供应大厅 import requests import pymysql from bs4 import BeautifulSoup # 用来解析网页 from fake_useragent import UserAgent import uuid import time cookk = { 'Cookie': 'sessionId=S_0KHA8RH66NM124OL; Hm_lvt_91cf34f62b9bedb16460ca36cf192f4c=

Jaeger_Java的博客 2022

一行代码搭建一个简易的本地文件服务器_附带外网教程_一蓑烟雨任平生

文章目录前言一、提前准备1.首先你要有Python环境2.下载个utool3.cmd查看本地ip二、三步搭建1.一行代码2.启动服务三、测试1.内网测试2.外网测试1.配置utool内网穿透2.看看外网效果四、改良1.bat一键启动2.双击运行总结 前言 有时候下载东西好慢,传输数据无论是同个公司下或者别的公司,或者朋友的文件,用qq传输,几个G还可以,用微信传输200M以上文件就无法传输了,如果是几十个G的话是不是心态就炸了 一、提前准备 1.首先你要有Python环境 没环境你玩个毛啊 2.下载

Jaeger_Java的博客 1840

Python抖音去水印_一步到位_一蓑烟雨任平生

直接上代码 import requests import json import easygui from tkinter import messagebox from tkinter import * top = Tk() top.withdraw() class douyin_video(): def __init__(self): self.headers = {'Accept': 'text/html,application/xhtml+xml,applicatio

Jaeger_Java的博客 1682

中国农业信息网_爬取新闻详情(源码)_一蓑烟雨任平生

废话不多说直接上代码 今天要倒霉的网站是全国农业信息网 import requests import pymysql from bs4 import BeautifulSoup # 用来解析网页 import uuid import time url = "http://www.agri.cn/V20/ZX/qgxxlb_1" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KH

Jaeger_Java的博客 1498
上一篇: JAVA_KEYTOOL_生成秘钥_一蓑烟雨任平生
下一篇: 【记录】Cause: com.kingbase8.util.KSQLException: ERROR: could not determine data t
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值