Python使用.NET开发的类库来提高你的程序执行效率

python,net · 浏览次数 : 0

小编点评

本文介绍了如何使用.NET平台开发的类库来提高Python的执行效率。通过对比实验,展示了.NET Framework、.NET Standard和.NET Core+环境下的类库调用效果。实验结果表明,使用.NET类库可以显著提高Python的执行效率,尤其在新版本如.NET 6上表现更为明显。 1. 文章首先提到Python在某些场景下可能效率不高,因此探讨了使用其他编程语言(如C#、C++、Rust)的库来提高Python的执行效率。 2. 文章演示了一个.NET Framework类库项目的创建和测试,包括编译生成的DLL文件备份,并在Python项目中通过clr.AddReference()引入类库。 3. 文章还介绍了如何在.NET Standard和.NET Core+环境下创建类库,并在Python中调用这些类库。实验结果显示,不同版本的.NET类库均能成功被Python调用。 4. 文章通过对比实验,展示了在不同.NET版本环境下,Python调用类库的耗时差异。实验表明,随着调用次数的增加,性能差距逐渐拉大。 5. 文章最后以一个简单的计时器为例,测试了.NET类库与原生Python在执行效率上的差异。实验结果显示,使用.NET类库的Python程序在大量运行时的耗时明显少于原生Python程序。 总之,本文通过实验验证了使用.NET平台开发的类库可以提高Python的执行效率,尤其在较新版本的.NET类库上表现尤为明显。这对于需要提高Python执行效率的场景具有实际应用价值。

正文

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

与Python使用.NET开发的类库来提高你的程序执行效率相似的内容:

Python使用.NET开发的类库来提高你的程序执行效率

Python由于本身的特性原因,执行程序期间可能效率并不是很理想。在某些需要自己提高一些代码的执行效率的时候,可以考虑使用C#、C++、Rust等语言开发的库来提高python本身的执行效率。接下来,我演示一种使用.NET平台开发的类库,来演示一下Python访问.NET类库的操作实现。类库演示包括

.NET 6+Semantic Kernel快速接入OpenAI接口

Semantic Kernel 与 LangChain 类似,但 Semantic Kernel 是为应用开发开发人员创建的SDK项目,它支持.NET, Python 以及 Java,但是对.NET支持最成熟(微软自家孩子嘛),可以让你的应用很轻易的集成AI大语言模型。今天我们快速地使用Semant...

1.5 为x64dbg编写插件

任何一个成熟的软件都会具有可扩展性,可扩展性是现代软件的一个重要特征,因为它使软件更易于维护和适应变化的需求,`x64dbg`也不例外其可通过开发插件的方式扩展其自身功能,`x64dbg`提供了多种插件接口,包括脚本插件、DLL插件、Python插件和.NET插件等。此外,`x64dbg`还支持用户自定义命令和快捷键。这使得用户可以自由地扩展和自定义软件的功能,从而更好地适应开发需求。我们以`C/

1.5 为x64dbg编写插件

任何一个成熟的软件都会具有可扩展性,可扩展性是现代软件的一个重要特征,因为它使软件更易于维护和适应变化的需求,`x64dbg`也不例外其可通过开发插件的方式扩展其自身功能,`x64dbg`提供了多种插件接口,包括脚本插件、DLL插件、Python插件和.NET插件等。此外,`x64dbg`还支持用户自定义命令和快捷键。这使得用户可以自由地扩展和自定义软件的功能,从而更好地适应开发需求。我们以`C/

[转帖]badboy与jmeter的结合使用

`https://blog.csdn.net/weixin_41754309/article/details/107106855` 欢迎关注【无量测试之道】公众号,回复【领取资源】, Python编程学习资源干货、 Python+Appium框架APP的UI自动化、 Python+Selenium框

[转帖]Java和Scala的前世今生

第一部分:Java 计算机语言介绍 第一代语言:机器语言。指令以二进制代码形式存在 第二代语言:汇编语言。使用助记符表示一条机器指令 第三代语言:高级语言 C、Pascal、Fortran面向过程的语言 C++面向过程/面向对象 Java跨平台的纯面向对象的语言 .NET跨语言的平台 Python、

6.0 Python 使用函数装饰器

装饰器可以使函数执行前和执行后分别执行其他的附加功能,这种在代码运行期间动态增加功能的方式,称之为`"装饰器"(Decorator)`,装饰器的功能非常强大,装饰器一般接受一个函数对象作为参数,以对其进行增强,相当于C++中的构造函数,与析构函数。装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有迫切需求的场

8.0 Python 使用进程与线程

python 进程与线程是并发编程的两种常见方式。进程是操作系统中的一个基本概念,表示程序在操作系统中的一次执行过程,拥有独立的地址空间、资源、优先级等属性。线程是进程中的一条执行路径,可以看做是轻量级的进程,与同一个进程中的其他线程共享相同的地址空间和资源。

Python使用socket的UDP协议实现FTP文件服务

用Python的socket,使用UDP协议实现一个FTP服务端、FTP客户端,用来实现文件的传输。在公司内网下,可以不适用U盘的情况下,纯粹使用网络,来实现文件服务器的搭建,进而实现文件的网络传输。同时用来理解Python的socket使用。

解决Python使用GPU

本文简单介绍了使用Python解决使用GPU的方法,并给出了TensorFlow和PyTorch示例;本文还介绍了TensorFlow GPU的安装版本介绍,以及介绍了安装CUDA的详细教程。