做ppt找图片的网站有哪些,网络优化是做啥的,中国建设人才网登录,个人域名备案后不能干什么Python使用Numba装饰器进行加速 前言前提条件相关介绍实验环境Numba装饰器进行加速未加速的代码输出结果 numba.jit加速的代码输出结果 前言 由于本人水平有限#xff0c;难免出现错漏#xff0c;敬请批评改正。更多精彩内容#xff0c;可点击进入Python日常小操作专栏、Ope… Python使用Numba装饰器进行加速 前言前提条件相关介绍实验环境Numba装饰器进行加速未加速的代码输出结果 numba.jit加速的代码输出结果 前言 由于本人水平有限难免出现错漏敬请批评改正。更多精彩内容可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看基于DETR的人脸伪装检测YOLOv7训练自己的数据集口罩检测YOLOv8训练自己的数据集足球检测YOLOv5TensorRT加速YOLOv5模型推理YOLOv5IoU、GIoU、DIoU、CIoU、EIoU玩转Jetson Nano五TensorRT加速YOLOv5目标检测YOLOv5添加SE、CBAM、CoordAtt、ECA注意力机制YOLOv5yolov5s.yaml配置文件解读、增加小目标检测层Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集YOLOv5使用7.0版本训练自己的实例分割模型车辆、行人、路标、车道线等实例分割使用Kaggle GPU资源免费体验Stable Diffusion开源项目 前提条件 熟悉Python 相关介绍 Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell)随着版本的不断更新和语言新功能的添加越多被用于独立的、大型项目的开发。Python是一种非常流行和强大的编程语言它有很多优点比如简洁、易读、灵活、跨平台、丰富的库等。但是Python也有一些缺点其中之一就是运行速度相对较慢。Python为什么慢呢这主要有以下几个原因 Python是一种解释型语言也就是说它的代码在运行时才被解释器转换成机器语言而不是像编译型语言那样提前编译成可执行文件。这样就增加了运行时的开销降低了执行效率。Python使用了动态类型也就是说它的变量在运行时才确定类型而不是像静态类型那样提前声明类型。这样就增加了运行时的类型检查和转换降低了执行效率。Python使用了全局解释器锁GIL也就是说它的多线程在同一时刻只能有一个线程执行而不是像多核处理器那样可以并行执行多个线程。这样就限制了Python的并发能力降低了执行效率。 Python的运行速度可以通过一些方法进行优化和加速比如 使用PyPy这是一种基于JIT即时编译技术的Python解释器它可以在运行时动态编译Python代码提高执行效率。使用Numba这是一种基于LLVM低级虚拟机技术的Python库它可以将Python函数编译成机器码提高执行效率。使用Cython这是一种基于C语言的Python扩展它可以将Python代码转换成C代码提高执行效率。使用多进程这是一种利用多核处理器的并行计算方法它可以创建多个进程避免GIL的限制提高执行效率。 Numba是一个用于Python的开源即时编译器它可以将Python代码编译为机器代码从而提高Python代码的执行速度。Numba的优缺点 优点 Numba可以显著提高Python代码的执行速度特别是在处理大量数据时。Numba使用LLVM低级虚拟机技术将Python函数编译成机器码从而避免了Python解释器的性能瓶颈。Numba可以通过使用JITJust-In-Time编译技术将Python代码转换为机器代码即当你调用Python函数时你的全部或部分代码就会被转换为“即时”执行的机器码它将以你的本地机器码速度运行从而避免了Python解释器的性能瓶颈。Numba支持多种CPU架构和操作系统包括x86、ARM和PowerPC。Numba可以与NumPy和SciPy等科学计算库无缝集成。 缺点 Numba只能加速一部分Python代码例如数值计算密集型代码而对于I/O密集型代码Numba的加速效果不明显。Numba需要对代码进行修改以便使用其加速功能这可能需要一些额外的工作。Numba的性能取决于代码的质量和结构因此需要一定的编程经验和技能。 以下是一个简单的numba加速例子它比较了使用numba和不使用numba的情况下计算斐波那契数列的第n项的时间消耗。 import time
import numbaimport warnings
warnings.filterwarnings(ignore)# 不使用numba的函数
def fib(n):if n 2:return nreturn fib(n-1) fib(n-2)# 使用numba的函数
numba.jit
def fib_numba(n):if n 2:return nreturn fib_numba(n-1) fib_numba(n-2)# 测试两个函数的运行时间
n 40
start time.time()
fib(n)
end time.time()
print(f不使用numba的时间{end - start}秒)start time.time()
fib_numba(n)
end time.time()
print(f使用numba的时间{end - start}秒)不使用numba的时间15.397910833358765秒
使用numba的时间0.731497049331665秒实验环境 Python 3.x 面向对象的高级语言Numba 0.58.1Python第三方库pip install numba -i https://pypi.tuna.tsinghua.edu.cn/simple Numba装饰器进行加速
未加速的代码
import timedef one_cycle():num 0 for i in range(1, 1000000): num ireturn numdef double_cycle():num 0 for i in range(1000): for j in range(1000):num i*jreturn num def triple_cycle():num 0for i in range(100): for j in range(100): for k in range(100):num i*j*kreturn num if __name____main__:start_time time.time()for i in range(100):one_cycle()end_time time.time()print(one_cycle函数运行时间:,(end_time-start_time)/100)start_time time.time()for i in range(100):double_cycle()end_time time.time()print(double_cycle函数运行时间:,(end_time-start_time)/100)start_time time.time()for i in range(100):triple_cycle()end_time time.time()print(triple_cycle函数运行时间:,(end_time-start_time)/100)输出结果
one_cycle函数运行时间: 0.021781625747680663
double_cycle函数运行时间: 0.031956143379211426
triple_cycle函数运行时间: 0.042625854015350344numba.jit加速的代码
import time
import numbaimport warnings
warnings.filterwarnings(ignore)numba.jit
def one_cycle():num 0 for i in range(1, 1000000): num ireturn numnumba.jit
def double_cycle():num 0 for i in range(1000): for j in range(1000):num i*jreturn num numba.jit
def triple_cycle():num 0for i in range(100): for j in range(100): for k in range(100):num i*j*kreturn num if __name____main__:start_time time.time()for i in range(100):one_cycle()end_time time.time()print(one_cycle函数运行时间:,(end_time-start_time)/100)start_time time.time()for i in range(100):double_cycle()end_time time.time()print(double_cycle函数运行时间:,(end_time-start_time)/100)start_time time.time()for i in range(100):triple_cycle()end_time time.time()print(triple_cycle函数运行时间:,(end_time-start_time)/100)输出结果
one_cycle函数运行时间: 0.002056455612182617
double_cycle函数运行时间: 0.00046929597854614255
triple_cycle函数运行时间: 0.0007887816429138183由于本人水平有限难免出现错漏敬请批评改正。更多精彩内容可点击进入Python日常小操作专栏、OpenCV-Python小应用专栏、YOLO系列专栏、自然语言处理专栏或我的个人主页查看基于DETR的人脸伪装检测YOLOv7训练自己的数据集口罩检测YOLOv8训练自己的数据集足球检测YOLOv5TensorRT加速YOLOv5模型推理YOLOv5IoU、GIoU、DIoU、CIoU、EIoU玩转Jetson Nano五TensorRT加速YOLOv5目标检测YOLOv5添加SE、CBAM、CoordAtt、ECA注意力机制YOLOv5yolov5s.yaml配置文件解读、增加小目标检测层Python将COCO格式实例分割数据集转换为YOLO格式实例分割数据集YOLOv5使用7.0版本训练自己的实例分割模型车辆、行人、路标、车道线等实例分割使用Kaggle GPU资源免费体验Stable Diffusion开源项目