python多线程与GIL的关系--接口测试

2024-03-20 00:48

本文主要是介绍python多线程与GIL的关系--接口测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python标准库为我们提供了threading(多线程)

Python并发编程Futures:Python3.2开始,标准库为我们提供了concurrent.futures模块,concurrent.futures 模块的主要特色是 ThreadPoolExecutor 和ProcessPoolExecutor 类,这两个类实现的接口能分别在不同的线程或进程中执行可调用的对象。这两个类在内部维护着一个工作线程或进程池,以及要执行的任务队列。

Python协程Asyncio:Python 3.4 以后标准库中asyncio 包,这个包使用事件循环驱动的协程实现并发。

1、GIL只支持单线程,而python支持多线程,这两者究竟是什么关系呢?

GIL的存在与Python支持多线程并不矛盾:

GIL是同一时刻,只有一个线程运行

Python的多线程,是指多个线程交替执行,造成一个“伪并行”的结果,具体到某一时刻,仍然只有一个线程在运行,并不是真正的多线程并行。

接口测试的时候,多线程并不影响的,当我们线程1请求接口1的时候这时候等待程序响应,此时线程2开始执行请求接口2的请求,交替进行,通过时间片的切换完成剩余的操作。站在用户角度看到的就是我们所说的多线程

2、 多进程与多线程的应用场景

如果你想对CPU密集型加速,使用多线程是无效的,请使用多进程。CPU密集型,是指会消耗大量的CPU资源的任务,比如计算1到100000000乘积,或者很长的文字编码、解码。

使用多线程无效,是因为Python的多线程互相切换,但是同一时刻只有一个线程运行。所以你使用一个主线程和使用多线程,本质上没有差别。反而由于线程切换带来额外的消耗,还会降低效率。

如果使用多进程,允许多个进程同时执行任务,所以能有效提高运行效率。

至于I/O密集型任务,如果想要加速,优先使用多线程或Asyncio。当然,多进程也可以,但是没有必要。因为I/O密集型的任务大多时间浪费在等待上。因此,在等待I/O时,我们切换线程去执行其他的任务就好了。

如果I/O操作非常多,需要建立连接也比较多,我们一般用Asyncio。因为Asyncio的任务切换更加轻量化,并且启动的任务数也远比多线程启动的线程数要多。

这篇关于python多线程与GIL的关系--接口测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/827751

相关文章

Python 字符串裁切与提取全面且实用的解决方案

《Python字符串裁切与提取全面且实用的解决方案》本文梳理了Python字符串处理方法,涵盖基础切片、split/partition分割、正则匹配及结构化数据解析(如BeautifulSoup、j... 目录python 字符串裁切与提取的完整指南 基础切片方法1. 使用切片操作符[start:end]2

Python库 Django 的简介、安装、用法入门教程

《Python库Django的简介、安装、用法入门教程》Django是Python最流行的Web框架之一,它帮助开发者快速、高效地构建功能强大的Web应用程序,接下来我们将从简介、安装到用法详解,... 目录一、Django 简介 二、Django 的安装教程 1. 创建虚拟环境2. 安装Django三、创

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

Python如何调用另一个类的方法和属性

《Python如何调用另一个类的方法和属性》在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择... 目录一、前言二、基本调用方式通过实例化调用通过类继承调用三、高级调用方式通过组合方式调用通过类方法/静

基于Python实现温度单位转换器(新手版)

《基于Python实现温度单位转换器(新手版)》这篇文章主要为大家详细介绍了如何基于Python实现温度单位转换器,主要是将摄氏温度(C)和华氏温度(F)相互转换,下面小编就来和大家简单介绍一下吧... 目录为什么选择温度转换器作为第一个项目项目概述所需基础知识实现步骤详解1. 温度转换公式2. 用户输入处

python中update()函数的用法和一些例子

《python中update()函数的用法和一些例子》update()方法是字典对象的方法,用于将一个字典中的键值对更新到另一个字典中,:本文主要介绍python中update()函数的用法和一些... 目录前言用法注意事项示例示例 1: 使用另一个字典来更新示例 2: 使用可迭代对象来更新示例 3: 使用

python连接sqlite3简单用法完整例子

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli... 目录1. 连接到数据库2. 创建游标对象3. 创建表4. 插入数据5. 查询数据6. 更新数据7. 删除

Python中的sort()和sorted()用法示例解析

《Python中的sort()和sorted()用法示例解析》本文给大家介绍Python中list.sort()和sorted()的使用区别,详细介绍其参数功能及Timsort排序算法特性,涵盖自适应... 目录一、list.sort()参数说明常用内置函数基本用法示例自定义函数示例lambda表达式示例o

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

Python利用GeoPandas打造一个交互式中国地图选择器

《Python利用GeoPandas打造一个交互式中国地图选择器》在数据分析和可视化领域,地图是展示地理信息的强大工具,被将使用Python、wxPython和GeoPandas构建的交互式中国地图行... 目录技术栈概览代码结构分析1. __init__ 方法:初始化与状态管理2. init_ui 方法: