31.Python从入门到精通—Python数据压缩 性能度量 测试模块

news2024/11/24 0:15:09

31.从入门到精通:Python数据压缩 性能度量 测试模块

  • 个人简介
    • 数据压缩
    • 性能度量
    • 测试模块

个人简介

🏘️🏘️个人主页:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,CSDN内容合伙人,阿里云社区专家博主,新星计划导师,在职数据分析师。

💕💕悲索之人烈焰加身,堕落者不可饶恕。永恒燃烧的羽翼,带我脱离凡间的沉沦。

在这里插入图片描述

🐘 希望大家能持续支持,共同向前迈进!😁
如果您觉得文章有价值,
欢迎留言💬,点赞👍,收藏🔖并关注我们➕🤝。
🪐💫💫💫💫💫💫💫热门专栏💫💫💫💫💫💫💫🪐
类型专栏
Python基础Python基础入门—详解版
Python进阶Python基础入门—模块版
Python高级Python网络爬虫从入门到精通🔥🔥🔥
Web全栈开发Django基础入门
Web全栈开发HTML与CSS基础入门
Web全栈开发JavaScript基础入门
Python数据分析Python数据分析项目🔥🔥
机器学习机器学习算法🔥🔥
人工智能人工智能

数据压缩

在Python中,可以使用内置的gzip和zipfile模块进行数据压缩和解压缩。
gzip模块用于gzip格式的压缩和解压缩,它提供了两个函数:gzip.compress()和gzip.decompress()。下面是一个简单的例子,说明如何使用gzip模块进行数据压缩和解压缩:

import gzip

# 要压缩的数据
data = b"Hello, world!"

# 压缩数据
compressed_data = gzip.compress(data)

# 解压缩数据
decompressed_data = gzip.decompress(compressed_data)

# 输出解压缩后的数据
print(decompressed_data)

在这个例子中,首先定义了一个要压缩的数据,然后使用gzip.compress()函数进行压缩,得到压缩后的数据。接着使用gzip.decompress()函数进行解压缩,得到原始数据。最后输出解压缩后的数据,可以看到输出的结果是原始数据。

  • zipfile模块用于zip格式的压缩和解压缩,它提供了ZipFile类,可以方便地对zip文件进行操作。

下面是一个简单的例子,说明如何使用zipfile模块进行数据压缩和解压缩:

import zipfile

# 要压缩的文件
filename = "data.txt"

# 压缩文件
with zipfile.ZipFile("data.zip", "w") as zip:
    zip.write(filename)

# 解压缩文件
with zipfile.ZipFile("data.zip", "r") as zip:
    zip.extractall()

在这个例子中,首先定义了一个要压缩的文件,然后使用ZipFile类创建一个zip文件,并将要压缩的文件添加到zip文件中。接着使用ZipFile类进行解压缩,将zip文件中的所有文件解压缩到当前目录下。

性能度量

在Python中,可以使用time和timeit模块来进行性能度量。
time模块提供了一组函数,用于测量程序的运行时间。

下面是一个简单的例子,说明如何使用time模块测量程序的运行时间:

import time

# 记录开始时间
start_time = time.time()
# 执行程序
print("Hello, world!")
# 记录结束时间
end_time = time.time()
# 计算程序运行时间
elapsed_time = end_time - start_time
# 输出程序运行时间
print("Elapsed time: {} seconds".format(elapsed_time))
  • 在这个例子中,首先使用time.time()函数记录程序开始时间,然后执行程序,最后使用time.time()函数记录程序结束时间。通过计算开始时间和结束时间之间的差值,可以得到程序的运行时间。

timeit模块提供了一个更加方便和精确的性能度量工具。它可以多次运行一个程序,并测量它的平均运行时间。

下面是一个简单的例子,说明如何使用timeit模块测量程序的运行时间:

import timeit

# 执行程序的代码
code = "print('Hello, world!')"
# 测量程序的运行时间
elapsed_time = timeit.timeit(code, number=1000)
# 输出程序运行时间
print("Elapsed time: {} seconds".format(elapsed_time))

在这个例子中,首先定义了要执行的程序代码,然后使用timeit.timeit()函数多次运行这段代码,并测量它的平均运行时间。通过指定number参数,可以控制运行代码的次数。

需要注意的是,性能度量的结果可能会受到多种因素的影响,例如硬件性能、操作系统、Python版本等等。因此,在进行性能度量时,需要尽可能消除这些因素的影响,以得到更加准确的结果。

测试模块

在Python中,有很多测试框架可以用于编写和运行测试代码。其中最常用的测试框架是unittest模块。
unittest模块提供了一组类和方法,用于编写和运行测试代码。下面是一个简单的例子,说明如何使用unittest模块进行测试:

import unittest

def add(a, b):
    return a + b

class TestAdd(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(1, 2), 3)
        self.assertEqual(add(0, 0), 0)
        self.assertEqual(add(-1, 1), 0)

if __name__ == '__main__':
    unittest.main()
  • 在这个例子中,首先定义了一个add函数,用于计算两个数的和。然后定义了一个TestAdd类,继承自unittest.TestCase类。在TestAdd类中,定义了一个test_add方法,用于测试add函数的正确性。在test_add方法中,使用self.assertEqual方法进行断言,判断add函数的返回值是否等于预期值。
  • 最后,使用unittest.main()函数运行测试代码。运行测试代码时,unittest会自动查找所有以test开头的方法,并运行它们。在运行过程中,unittest会输出测试结果,包括测试通过的数量和测试失败的数量。
  • 除了unittest模块之外,还有其他一些测试框架,例如pytest和nose。这些测试框架提供了更加灵活和方便的API,可以更加方便地编写和运行测试代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1558150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的全网最详细的解析

【3D-GS】Gaussian Splatting SLAM——基于3D Gaussian Splatting的定SLAM 3D-GS 与 Nerf 和 Gaussian Splatting1. 开山之作 Nerf2. 扛鼎之作 3D Gaussian Splatting2.1 什么是3D高斯?高斯由1D推广到3D的数学推导2.2 什么是光栅化?2.3 什么是Splatting?2.4 什么是交叉优化?…

QT中的文件操作QFile、QDataStream、QTextStream、QBuffer

文件操作概述 1、Qt中IO操作的处理方式 (1)、Qt通过统一的接口简化了文件与外部设备的操作方式 (2)、Qt中的文件被看做是一种特殊的外部设备 (3)、Qt中的文件操作与外部设备操作相同 2、IO操作中的关键…

YOLOv9改进策略 :主干篇 | 南开大学提出LSKNet,遥感旋转目标检测新SOTA ,ICCV 2023

💡💡💡本文改进内容: 动态调整特征提取骨干的感受野,以便更有效地处理被检测大小物体的不同的检测能力,也就是说可以有效提升检测数据集当中存在大小目标的检测能力 改进结构图如下: 《YOLOv9魔术师专栏》将从以下各个方向进行创新: 【原创自研模块】【多组合点优…

二维码门楼牌管理应用平台建设:采集成果预处理与标准化

文章目录 前言一、采集成果预处理的重要性二、预处理操作流程三、结论与展望 前言 在数字化时代,二维码门楼牌管理应用平台的建设成为了城市管理的重要一环。通过采集门楼牌信息,并对其进行预处理,我们可以实现数据的规范化、去重等操作&…

39.HarmonyOS鸿蒙系统 App(ArkUI)线性布局结合弹性布局

弹性布局(Flex) 弹性布局(Flex)提供更加有效的方式对容器中的子元素进行排列、对齐和分配剩余空间。容器默认存在主轴与交叉轴,子元素默认沿主轴排列,子元素在主轴方向的尺寸称为主轴尺寸,在交叉…

debian12,linux-image-6.6.13+bpo-amd64内核nvidia显卡驱动失效

问题 更新linux内核linux-image-6.6.13bpo-amd64和linux-headers-6.6.13bpo-common后无法进入图形化界面,nvidia驱动版本535.154.05,nvidia官方驱动 日志 /var/log/Xorg.1.log [ 3.834] (--) Log file renamed from "/var/log/Xorg.pid-11…

智慧公厕产品的特点、应用场景

随着城市化进程的加速和智能科技的不断发展,智慧公厕作为城市管理的重要组成部分,逐渐成为了现代城市的一道靓丽风景线。它的特点和应用场景备受人们关注和喜爱。 智慧公厕的特点有哪些呢?首先,它智能化的设备和感应技术为其特点…

Collection与数据结构 链表与LinkedList (一):链表概述与单向无头非循环链表实现

1.ArrayList的缺点 上篇文章我们已经对顺序表进行了实现,并且对ArrayList进行了使用,我们知道ArrayList底层是使用数组实现的. 由于其底层是一段连续空间,当在ArrayList任意位置插入或者删除元素时,就需要将后序元素整体往前或者往后搬移,时…

unity内存优化Texture2D优化

作为unity开发者,我们使用memory Profiler来查看内存,本期我们项目中Texture2D的内存占有比较高,为了对这块做优化我们先看下内存的占有情况。 step1 使用memory Profiler对手机应用程序截图 打开截取后的内存页面,选择顶部Unit…

stitcher类实现多图自动拼接

效果展示 第一组: 第二组: 第三组: 第四组: 运行代码 import os import sys import cv2 import numpy as npdef Stitch(imgs,savePath): stitcher cv2.Stitcher.create(cv2.Stitcher_PANORAMA)(result, pano) stitcher.st…

NVIDIA Jetson Xavier NX入门-镜像为jetpack5(1)——镜像烧写

NVIDIA Jetson Xavier NX入门-镜像为jetpack5(1)——镜像烧录 0.博主曾经撰写了关于 NVIDIA Jetson Xavier NX入门-镜像为jetpack4系列的文章。但是升级镜像到jetpack5时出现诸多问题,之前的文章已不再适用。如果想安装jetpack4请参照下面三…

[技术笔记] Flash选型之基础知识芯片分类

1、按照接口分类 分为 Serial串口Flash 和 Parallel并口Flash; 市场大量使用Serial Flash;价格便宜;已满足系统对数据读写速度的要求; Serial Flash已经可以代表 NOR Flash; 小知识: 1)在…

Vue3 使用 v-bind 动态绑定 CSS 样式

在 Vue3 中&#xff0c;可以通过 v-bind 动态绑定 CSS 样式。 语法格式&#xff1a; color: v-bind(数据); 基础使用&#xff1a; <template><h3 class"title">我是父组件</h3><button click"state !state">按钮</button>…

应用程序open如何调用到驱动程序的open函数,inode和file的理解

基础知识&#xff1a; 1. struct inode 每创建一个文件&#xff0c;都会生成一个设备节点inode&#xff1b;可以通过inode找到设备号&#xff0c;然后找到cdv; 驱动只有一份&#xff0c;存在多个同类字符设备的时候&#xff0c;得由驱动来区分不同的设备&#xff0c;怎么区别呢…

SEH异常之编译器原理探究(2)

_try_finally原理 无论try结构体中是什么代码&#xff0c;都会执行finally里面的代码 局部展开 当try里面没有异常&#xff0c;而是return、continue、break等语句时&#xff0c;就不会走_except_handle3这个函数&#xff0c;而是调用_local_unwind2进行展开 然后调用[ebx e…

鸿蒙OS开发问题:(ArkTS) 【解决中文乱码 string2Uint8Array、uint8Array2String】

在进行base64编码中&#xff0c;遇到中文如果不进行处理一定会出现乱码 let result1: string CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse((一二三四五六七八九十123)))LogUtils.i("result1 " result1);let result2: string CryptoJS.enc.Base64.par…

Java:抽象类相关

引言&#xff1a; 在Java编程语言中&#xff0c;抽象类是一种不能被实例化的重要类型&#xff0c;它为类的层次结构提供了一个基础框架。抽象类可以包含抽象方法和具体方法&#xff0c;它们通常用作其他类的父类或基类。本文将详细探讨Java中抽象类的概念、如何使用它们以及在设…

C++类基础5——拷贝构造函数,拷贝赋值运算符(复制构造函数,复制赋值运算符)

拷贝控制操作 当定义一个类时&#xff0c;我们显式地或隐式地指定在此类望的对象拷贝&#xff0c;移动、赋值和销毁时做什么。 一个类通定义五种特殊的成员函数来控制这些操作&#xff0c;包括&#xff1a;拷贝构造函数(copy consinuctor)、拷贝赋值运算符(copy-assignment op…

某国投集团知识竞赛活动方案

一、抽签分组办法 1.抽签&#xff1a;参赛队伍赛前进行抽签分组。 2.分组&#xff1a;全部报名参赛队伍按照抽签顺序分为4组&#xff0c;每组7支队伍进行预赛&#xff0c;9月16日上午1、2组进行初赛&#xff0c;9月16日下午3、4组进行初赛。每组决出的前三名进入决赛。 二、初…

【Frida】【Android】工具篇:ZenTracer

&#x1f6eb; 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…