python多线程执行任务Threading

简介: python多线程执行任务Threading

代码如下:

# coding=utf-8
"""
    作者:gaojs
    功能:
    新增功能:
    日期:2022/6/9 18:21
"""
from selenium import webdriver
from selenium.webdriver.common.by import By
import threading
import time
import sys
browsers = []
threads = []
num = int(sys.argv[1])
i = 0
for i in range(0, num):
    # chrome_options = webdriver.ChromeOptions()
    # chrome_options.add_argument('--ignore-certificate-errors')
    # chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
    browser = webdriver.Chrome()
    browser.implicitly_wait(3)
    browsers.append(browser)
def saml_request(browser):
    global i
    while True:
        try:
            browser.get("https://192.168.120.222/prx/000/http/localhost/login/sp1/default/login/index.html")
            # 点击高级选项
            if i == 0:
                browser.find_element_by_xpath('//button[@id="details-button"]').click()
                # 点击详情连接,跳出隐私连接
                browser.find_element_by_xpath('//a[@id="proceed-link"]').click()
            # 点击下拉框
            browser.find_element_by_xpath('//button[@class="btn dropdown-toggle btn-default"]').click()
            # 选择method
            browser.find_element_by_xpath('//a[@role="option"] //span[contains(text(),"sm1")]').click()
            # 点击sign in 按钮
            browser.find_element_by_xpath('//button[@id="saml_login"]').click()
            # 点击高级选项
            if i == 0:
                browser.find_element_by_xpath('//button[@id="details-button"]').click()
                # 点击详情连接,跳出隐私连接
                browser.find_element_by_xpath('//a[@id="proceed-link"]').click()
            # 跳转idp,等待时间
            time.sleep(2)
            # 登录操作
            browser.find_element_by_name("uname").send_keys("u1")
            browser.find_element_by_name("pwd").send_keys("u1")
            browser.find_element_by_name("submitbutton").click()
            time.sleep(2)
            # 退出登录
            browser.find_element_by_xpath("//a[text()='Logout']").click()
            print("%s %d" % (time.ctime(), i))
            i += 1
        except:
            pass
for i in range(0, num):
    thread = threading.Thread(target=saml_request, args=(browsers[i],))
    # 开启新线程
    thread.start()
    # 添加线程到线程列表
    threads.append(thread)
# 等待所有线程完成
for i in range(0, num):
    threads[i].join()
print('退出主线程')
相关文章
聊聊python多线程与多进程
为什么要使用多进程与多线程呢? 因为我们如果按照流程一步步执行任务实在是太慢了,假如一个任务就是10秒,两个任务就是20秒,那100个任务呢?况且cpu这么贵,时间长了就是浪费生命啊!一个任务比喻成一个人,别个做高铁,你做绿皮火车,可想而知!接下来我们先看个例子:
|
6天前
|
分布式计算 安全 Java
Python 多线程
Python 多线程
15 0
|
7天前
|
数据采集 存储 C++
单线程 vs 多进程:Python网络爬虫效率对比
本文探讨了Python网络爬虫中的单线程与多进程应用。单线程爬虫实现简单,但处理速度慢,无法充分利用多核CPU。而多进程爬虫通过并行处理提高效率,更适合现代多核架构。代码示例展示了如何使用代理IP实现单线程和多进程爬虫,显示了多进程在效率上的优势。实际使用时还需考虑代理稳定性和反爬策略。
单线程 vs 多进程:Python网络爬虫效率对比
|
8天前
|
Python
深度解析Python中的多线程编程
深度解析Python中的多线程编程
30 1
|
5天前
|
存储 索引 Python
元组(Tuple)在Python编程中的应用与实例
元组(Tuple)在Python编程中的应用与实例
17 2
|
5天前
|
机器学习/深度学习 数据可视化 数据挖掘
Python编程的深入探索与实用案例
Python编程的深入探索与实用案例
16 3
|
15天前
|
存储 算法 安全
Python编程实验六:面向对象应用
Python编程实验六:面向对象应用
41 1
|
15天前
|
Python
Python编程作业五:面向对象编程
Python编程作业五:面向对象编程
43 1
|
1天前
|
数据采集 运维 API
适合所有编程初学者,豆瓣评分8.6的Python入门手册开放下载!
Python是一种跨平台的计算机程序设计语言,它可以用来完成Web开发、数据科学、网络爬虫、自动化运维、嵌入式应用开发、游戏开发和桌面应用开发。 Python上手很容易,基本有其他语言编程经验的人可以在1周内学会Python最基本的内容(PS:没有基础的人也可以直接学习,速度会慢一点) 今天给小伙伴们分享一份Python语言及其应用的手册,这份手册主要介绍 Python 语言的基础知识及其在各个领域的具体应用,基于最新版本 3.x。
|
1天前
|
缓存 测试技术 Python
Python编程中的装饰器应用及性能优化
装饰器是Python中一种强大的功能,它允许我们修改或增强函数或类的行为,而无需修改其本身的代码。装饰器在Python中广泛应用,包括日志记录、性能测试、事务处理、缓存等。 **一、装饰器的基础