python项目打包pyd_python脚本打包成pyd文件:教程和简单的性能对比测试

本文介绍了如何将Python脚本打包成pyd文件,强调了pyd文件的安全性和性能提升,并提供了详细的打包步骤。测试结果显示,纯计算代码通过pyd调用的性能可提升约一倍。
摘要由CSDN通过智能技术生成

最近在学习openCV发现,想查看源码时,发现程序是通过pyd格式的文件编译过的,于是去网上了解一下,pyd文件如何生成以及其作用。

作用有2方面:

1.安全性更高:通过pyd生成的文件,已变成了dll文件,无法查看源码,只能通过反汇编以后才能查看;

2.编译成pyd后,性能会有提升---(网上有的人说可以N倍提升),本人测试的代码提升约1倍,最后会有详细说明。

打包的过程:

1.安装打包的模块 pip install Cython

2.将要打包的脚本,放在非中文路径下,在路径下新增一个setup.py文件;

代打包的代码:

# -*- coding:utf-8 -*-

# @Time :2020/4/17

import time

def sum_int():

start_time = time.time()

a = (x for x in range(4*10 ** 8))

sum_int = 0

for i in a:

sum_int += i

print(sum_int)

print(f'cost_time:{time.time() - start_time}')

if __name__ == "__main__":

sum_int()

setup.py文件内容

# -*- coding:utf-8 -*-

# @Time :2020/4/20

from distutils.core import setup

from Cython.Build import cythonize

setup(

name='tmp_debug',

ext_modules=cythonize("tmp_debug.py"),

)

在命令行执行

pip install setup.py build_ext

246ab341884f

image.png

在当前路径下会生成一个build文件

246ab341884f

image.png

路径目录有点深,build后面会将整个目录结构再创建一遍(暂时没有去研究去掉的方法),生成的pyd文件,以脚本名(tmp_debug.*)开头,不可修改这个pyd文件的名称,否则无法正常使用

4.调用pyd文件:

将pyd文件当成是一个普通模块使用,通过import+模块名 调用

本例中的调用方法:

246ab341884f

image.png

性能对比:

直接运行的用时:

246ab341884f

image.png

通过pyd调用的用时:

246ab341884f

image.png

通过pypy3调用tmp_debug.py文件的用时

246ab341884f

image.png

结论:

对于纯计算代码,打包成pyd的性能与用pypy3调用近似,能提高约一倍的性能。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值