Python由于本身的特性原因,执行程序期间可能效率并不是很理想。在某些需要自己提高一些代码的执行效率的时候,可以考虑使用C#、C++、Rust等语言开发的库来提高python本身的执行效率。接下来,我演示一种使用.NET平台开发的类库,来演示一下Python访问.NET类库的操作实现。类库演示包括.NET Framework、.NET Standard、.NET CORE+环境。 
先安装pythonnet库
首先测试.net framework库能不能成功。创建一个.net framework的类库项目
开发一个测试类,代码如图所示,提供一个方法来输出“这是一个.net framework库的调用返回值”
编译以后,生成的dll拷贝到我的D盘的MyDlls文件夹内备用
创建一个python项目,调用.NET库需要先引入clr,clr.AddReference()里面添加你的类库地址。instance = FxTest();写法相当于你用C# 代码:var instance = new FxTest();来实例化一个对象。
运行Python程序,可以看到.net fx类库的方法被成功调用并返回。
 
测试.net standard项目。新建一个.net standard2.1的项目
开发两个类,一个用来给Python程序调用,一个是最终实现。
编译以后,也把类库文件丢之前的文件夹内备用。
改造下刚才的python代码,引用新的.net standard开发的类库,并运行python代码,也可以被成功调用。
再测试下.net core或以上类库环境。此处创建一个.net 8类库项目
同样的,也新建一个测试类,并且提供一个方法给python使用。该方法比前面测试案例多了一个参数输入。
编译以后,也丢上面用到的文件夹内测试用。
继续改造python代码,并运行,发现出错。
对刚才的.net8类库项目降级为.net6,再重新编译,然后替换到之前的测试用文件夹内。
再重新执行python程序,可以看到被成功调用了。说明截止目前,pythonnet只支持到.net6或者也可能到7,7不是LTS版本我就不测试了,但是.net 6是妥妥可以运行,那就代表.net 6、.net 5、netcore3.1以及netcore3.1以下版本都是可以被支持的了。
能够使用.NET来实现一些操作给python调用的好处是,可以提高python的一些运行效率。原生python执行效率毕竟可能尴尬一点点。
下面写一个例子来测试下效率差异。在netstandard类库里面新增一个累加方法:
Python里面写一个计时器,用来对执行方法的计时使用。
python里面也新增一个累加器方法,并且对两个方法都套上上面的计时器,用于测试耗时开销。
运行程序,查看执行结果,10000次运行,python耗时0.000997s,.NET库内的操作耗时约等于0秒
看不出太大效果,那就加到1000w次,得到的耗时相差,差不多147倍数。
再增大一些,1Y次,性能和上面1KW次比值基本上差不多,157倍数,取个中间值,相当于150倍性能差距。
上面这个只是使用.net standard2.1环境,如果使用更高版本的.net类库环境,估计还会更加拉大差距。本机的python环境版本为python 3.10.6。
 以上就是本文章全部内容,如果对你有帮助,欢迎关注我的个人公众号:【Dotnet Dancer】
如果以上文章内容无法访问或者图片丢失,可以观看我的公众号原文文章:
https://mp.weixin.qq.com/s/ABlHCDmu7yLE7_aI2Z8sIA
 
 

Python使用.NET开发的类库来提高你的程序执行效率的更多相关文章

  1. (转)对《30个提高Web程序执行效率的好经验》的理解

    阅读了博客园发布的IT文章<30个提高Web程序执行效率的好经验>,这30条准则对我们web开发是非常有用的,不过大家可能对其中的一些准则是知其然而不知其所以然. 下面是我对这些准则的理解 ...

  2. 解读30个提高Web程序执行效率的好经验

    其实微博是个好东西,关注一些技术博主之后,你不用再逛好多论坛了,因为一些很好的文章微博会告诉你,最近看到酷勤网推荐的一篇文章<30个提高Web程序执行效率的好经验>,文章写得不错,提到一些 ...

  3. 关于提高python程序执行效率的思路和想法

    相比编译型语言(C系列)python胜在简介的语法和优雅的动态编程体验,但是在执行效率上,python有解释性语言先天的劣势——执行效率较低,为了让编写出的程序获得更快的执行效率,开启此文章. pyt ...

  4. 吴裕雄--天生自然java开发常用类库学习笔记:国际化程序

    import java.util.ResourceBundle ; public class InterDemo01{ public static void main(String args[]){ ...

  5. javascript之文档碎片,文档碎片在理论上可以提高DOM操作的执行效率

    刚来到这里,趁着还没有忘记,来记录一下,昨晚学习的一个知识点——JavaScript中的文档碎片. 一.对文档碎片的基本认识 文档碎片可以提高DOM操作性能(理论上,注意!!理论上的) 文档碎片原理 ...

  6. 50个技巧提高你的PHP网站程序执行效率

    1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP手册中说echo是语言结构,不是真正的函数,故 把函数加上了双引号). 2.如果能将类的方法定义成static,就尽量定义成static ...

  7. 30条技巧提高Web程序执行效率

    尽量避免使用DOM.当需要反复使用DOM时,先把对DOM的引用存到JavaScript本地变量里再使用.使用设置innerHTML的方法来替换document.createElement/append ...

  8. 30个提高Web程序执行效率的好经验

    尽量避免使用DOM.当需要反复使用DOM时,先把对DOM的引用存到JavaScript本地变量里再使用.使用设置innerHTML的方法来替换document.createElement/append ...

  9. 2.对《30个提高Web程序执行效率的好经验》的理解

    摘自:http://www.cnblogs.com/powertoolsteam/archive/2010/07/12/1775933.html 文章中执行代码的消耗时间是怎么计算的,有知道的同学可以 ...

  10. JS基础_质数练习的改进,提高程序执行效率

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. Raft 共识算法4-选举限制

    Raft 共识算法4-选举限制 Raft算法中译版地址:https://object.redisant.com/doc/raft中译版-2023年4月23日.pdf 英原论文地址:https://ra ...

  2. 8.prometheus监控--监控Mysql8.0

    一.环境搭建 docker-compose安装mysql mkdir /data/mysql -p cd /data/mysql cat > docker-compose.yaml <&l ...

  3. 习题8 #第8章 Verilog有限状态机设计-3 #Verilog #Quartus #modelsim

    3. 编写一个8路彩灯控制程序,要求彩灯有以下3种演示花型. (1) 8路彩灯同时亮灭: (2) 从左至右逐个亮(每次只有1路亮): (3) 8路彩灯每次4路灯亮,4路灯灭,且亮灭相间,交替亮灭. 在 ...

  4. SAP集成技术(十一)SAP混合集成平台

    愿景 SAP产品之间实现无缝集成还需要一些时间,目前可能还存在一些技术挑战或者需要进一步的开发工作,以便在未来能够轻松地把所有SAP产品整合在一起.让SAP产品能够顺利地与非SAP的解决方案连接,这也 ...

  5. 第三章-常用的渗透测试工具-(sqlmap)

    常用渗透测试工具 1.sqlmap 支持的数据库:MySQL.Oracle.PostgreSQL.SQL Server.Access.IBM DB2.SQLite.Firebird.Sybase.SA ...

  6. ruby 常用代码片段

    # 文件的当前目录 puts __FILE__ # string.rb # 文件的当前行 puts __LINE__ # 6 #文件的当前目录 puts __dir__ #/media/haima/3 ...

  7. Triton 源码初步研读

    一.核心接口形态 def jit( fn: Optional[T] = None, *, version=None, do_not_specialize: Optional[Iterable[int] ...

  8. ansible系列(1)--ansible基础

    目录 1. ansible概述 1.1 ansible的功能 1.2 ansible的特性 1.3 ansible的架构 1.4 ansible注意事项 1. ansible概述 Ansible 是一 ...

  9. 对于Docker和Podman的一点使用经验

    前言:本文会以多个实际的线上例子,分享自己对于Docker和Podman的一点使用经验及踩过的坑,希望对读者有一点帮助. 本文bash脚本初步加工后可直接使用(兼容mac和linux系统),对于关键点 ...

  10. Unity Visual Scripting 使用随记

    1.Wait Until并不会再执行前面的代码,而是反复执行获取bool变量的代码:需自己拆出来写. 2.yield return null对应Wait For Next Frame,多用这个避免协程 ...