网上说的将python代码,通过Cython打包成pyd的教程挺多,好处也多,主要有两个:

1.隐藏代码

2.加速运行速度

补充两点:

1.打包脚本配置

__build__.py

1 from distutils.core importsetup2 from Cython.Build importcythonize3 importfilemanager, os4

5 filelist =[]6 folders = [".\\"] #".\\utils",

7 excludes = [ "__init__", "__build__", "u3dNameRes"]8

9 for rootpath infolders:10

11 alllist = filemanager.getFileList(rootpath, ".py")12 for file inalllist:13 if not any(ex in file for ex inexcludes):14 filelist.append(file)15

16 setup(17 name = 'any words.....',18 ext_modules = cythonize(filelist, compiler_directives = {'language_level': 2}),19 )

filemanager.getFileList 是工具类,用来获取某目录下,指定后缀的文件列表

make.bat

1 @echo off

2 set libname=u3dnamedres3 remif exist build ( rd build /s /q )

4 python __build__.py build_ext --inplace5 xcopy %libname% .\ /s /e /y6 rd %libname% /s /q7 pyinstaller -F u3dNameRes.py8 del *.pyd /s /q9 del *.c /s /q

第4行是生成pyd文件

这里有个特别要注意的点,就是不同目录下的py文件,一定要在目录下加上__init__.py,然后在里面引用你的py文件。

引用的路径只需要写到模块下的目录,不要把模块的名字也加到最前面去。

不然,等会生成的pyd文件会变成在根目录下,导致编译exe的时候,找不到pyd文件。这点非常重要。

2.加载的两种方式

1)直接引用

直接引用就是跟平时写代码的一样,直接import .... 或者是 from xxxx import .... 又或者是import xxxx as yyy即可

2)外部加载

获取查找文件的方式,并配合pkgutil.iter_modules,把pyd加载到内存里面。

1 defloadpys(dirs):2 ifisinstance(dirs, str):3 dirs =[dirs]4

5 if os.getcwd() not insys.path:6 sys.path.append(os.getcwd())7 for path indirs:8 prefix = path + "."

9 roots = [ "%s%s%s" % (p, os.sep, path) for p insys.path]10 for _importer, modname, _ispkg inpkgutil.iter_modules(roots, prefix):11 try:12 if_ispkg:13 module = __import__(modname, fromlist = ["__init__"])14 else:15 module = __import__(modname, fromlist =True)16 exceptException as e:17 raise Exception("import failed %s" %modname)18 else:19 yield module, modname

这方法同样适用于加载exe外部的pyd文件。

另外,如果说是外部加载的pyd,要在pyinstaller打包的时候,也打进exe的话,需要进行以下步骤:

1.先跑一遍pyinstaller -F xxxx.py,生成 xxxx.spec

2.然后修改xxxx.spec,把要打包进去的pyd文件,添加到配置datas=[('*.pyd', '.\\proxy\\')]

3.然后再生成打包,用命令 pyinstaller -F xxxx.spec

python pyd 速度提升_pyd打包补充相关推荐

  1. python 取反_自从用了这招pandas 空数据处理方法,python编程速度提升了不少

    今天为大家带来的内容是:自从用了这招pandas 空数据处理方法,python编程速度提升了不少 文章内容主要介绍了pandas 空数据处理方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工 ...

  2. python1000行代码_用好这3行代码,可以让你的Python脚本速度提升5倍!

    Python是一门非常适合处理数据和自动化完成重复性工作的编程语言,我们在用数据训练机器学习模型之前,通常都需要对数据进行预处理,而Python就非常适合完成这项工作,比如需要重新调整几十万张图像的尺 ...

  3. Python速度提升

    Python 是一种脚本语言,相比 C/C++ 这样的编译语言,在效率和性能方面存在一些不足.但是,有很多时候,Python 的效率并没有想象中的那么夸张.本文对一些 Python 代码加速运行的技巧 ...

  4. mac webpack 版本_晓前端周刊 第48期:EMP面向未来微前端方案正式开源了!玩转 webpack,使你的打包速度提升 90%;...

    业界动态 苹果最大杀招:iPhone App 已能在电脑运行 近日网友反馈,苹果 App Store 中大量应用在兼容性一栏中显示:已支持运行 macOS 11(及以上版本)的 Mac 电脑.这意味着 ...

  5. 在Python中文件用Feather格式,与 CSV说再见,速度提升 150 倍!

    转载:再见 CSV,速度提升 150 倍!_菜鸟学Python的博客-CSDN博客 为什么要和CSV再见? 好了说了那么久,来介绍下为什么要和CSV再见.其实也谈不上彻底再见吧,日常还是要用的,这里再 ...

  6. 如何将 iOS 工程打包速度提升十倍以上

    如何将 iOS 工程打包速度提升十倍以上 过慢的编译速度有非常明显的副作用.一方面,程序员在等待打包的过程中可能会分心,比如刷刷朋友圈,看条新闻等等.这种认知上下文的切换会带来很多隐形的时间浪费.另一 ...

  7. python的速度问题_python编程如何提升速度篇

    1. Python编程速度技巧 1.1. 最常见 * 一个最常见的速度陷坑(至少是俺在没看到网上这篇介绍时陷进去 过好些次的) 是: 许多短字串并成长字串时, 大家通常会用: 切换行号显示 1 sh ...

  8. numba 让python速度提升百倍

    本文仅供学习交流使用,如侵立删!demo下载见文末 python由于它动态解释性语言的特性,跑起代码来相比java.c++要慢很多,尤其在做科学计算的时候,十亿百亿级别的运算,让python的这种劣势 ...

  9. 开源sk-dist,超参数调优仅需3.4秒,sk-learn训练速度提升100倍

    作者 | Evan Harris 译者 | Monanfei 编辑 | Jane  出品 | AI科技大本营(ID:rgznai100) [导语]这篇文章为大家介绍了一个开源项目--sk-dist.在 ...

  10. 单机训练速度提升高达640倍,快手开发GPU广告模型训练平台

    作者|廉相如(快手FeDA智能决策实验室 ) 如何有效处理大规模用户数据进行广告推荐?对于互联网企业的发展和进步至关重要.这也是为何快手成立西雅图实验室并实现新一代GPU广告模型训练平台的原因之一.快 ...

最新文章

  1. find、sed、awk、grep命令总结
  2. Mysql的row_format(fixed与dynamic)
  3. Cookie/Session机制详解--如何区分不同用户
  4. 生成jsp验证码的代码详解(servlet版)
  5. Elasticsearch安装X-Pack插件
  6. HTML的基本知识(三)
  7. @程序员,入行物联网的避坑指南!| 技术头条
  8. R语言多元统计包简介:各种假设检验 统计方法 聚类分析 数据处理
  9. 创建dqn的深度神经网络_深度Q网络(DQN)-II
  10. 操作系统(1) 操作系统概念
  11. RHCE红帽考试认证考试模拟题(与真题区别是一些名称不同) 答案见下个博文
  12. 使用活字格制作企业办公用品管理软件
  13. java转测试_Java开发菜转测试可行?
  14. 类和对象的基础2——对象的生与死(构造函数和析构函数)
  15. 计算机设计大赛中南赛区2019通告,我院6支队伍在2019中国大学生计算机设计大赛 中南地区赛喜获佳绩...
  16. 福大计算机课程表,福州大学课程表(非全日制工程硕士研究生2015年周末班公共....doc...
  17. [Mugeda HTML5技术教程之11]Mugeda API简介
  18. 当年高考,小灰是怎么混过来的?
  19. 学习-编写判断一个正整数是否为素数的函数
  20. linux平台性能监控系统,如何使用top命令监控Linux系统性能

热门文章

  1. 服务器怎么连接无线路由器怎么设置,光猫连接无线路由器怎么设置
  2. 上线啦,PP.io!
  3. 苹果开发者账号双重认证
  4. nginx +location + https
  5. 计算LTE 峰值速率
  6. 音乐相册源码php,分享使用JavaScript制作微信音乐相册实例
  7. 2022牛客多校9 BTwo Frogs(概率DP)
  8. ios 系统状态栏样式修改_IOS修改状态栏的字体颜色以及修改状态栏的背景颜色...
  9. 利用js书写正三角形
  10. 论文笔记(三):DAML: Dual Attention Mutual Learning between Ratings and Reviews for Item Recommendation