首页 > 编程语言 >Python使用.NET开发的类库来提高你的程序执行效率(包括.NET Framework、.NET Standard、.NET CORE+环境)

Python使用.NET开发的类库来提高你的程序执行效率(包括.NET Framework、.NET Standard、.NET CORE+环境)

时间:2024-06-17 10:47:33浏览次数:12  
标签:类库 python 程序执行 Python 测试 NET net

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    

 

2024-06-17 10:31:12【出处】:https://www.cnblogs.com/weskynet/p/18251383

=======================================================================================

标签:类库,python,程序执行,Python,测试,NET,net
From: https://www.cnblogs.com/mq0036/p/18251897

相关文章

  • 升级到.Net 8 api 返回JObject 对象为空字符串
    在使用dotnet8过程中,使用了JObject类型作为api的返回,但是返回的空数组api:[HttpGet("voices")]publicasyncTask<IActionResult>GetObject(){JObjectobj=newJObject();obj["test"]="test";returnnewJsonResult(obj){StatusCod......
  • C#开发的NoteNet桌面小贴士 - 开源研究系列文章 - 个人小作品
          十多年前编写过这个NoteNet小应用,不过当时用的是文本的保存方式,而且功能上也相对较多。这次重新编写这个小应用,用上新的技术和功能。现在先把源码发布出来,在另个系列的博文中(C#基于.netframework的应用开发实战编程(一)-编程手把手系列文章)将以此小应用为例子进行......
  • Python使用.NET开发的类库来提高你的程序执行效率
    Python由于本身的特性原因,执行程序期间可能效率并不是很理想。在某些需要自己提高一些代码的执行效率的时候,可以考虑使用C#、C++、Rust等语言开发的库来提高python本身的执行效率。接下来,我演示一种使用.NET平台开发的类库,来演示一下Python访问.NET类库的操作实现。类库演示包括.N......
  • Net上传Nuget包以及把多个.nupkg文件打包成一个文件
    1、打包Nuget包第一种方式:●使用NuGetCLI工具将整个项目打包为NuGet包●打开命令行终端●导航到包含项目文件的项目目录例如:cdC:\MyProject●使用以下命令将项目打包为NuGet包:例如:nugetpack[项目文件路径]请将[项目文件路径]替换为实际的项目文件路径。例如,如果你的项......
  • Net上传Nuget包以及把多个
    Net上传Nuget包以及把多个.nupkg文件打包成一个文件1、打包Nuget包第一种方式:使用NuGetCLI工具将整个项目打包为NuGet包打开命令行终端导航到包含项目文件的项目目录例如:cdC:\MyProject使用以下命令将项目打包为NuGet包:例如:nugetpack[项目文件路径] 请将[项目文件路......
  • C#.NET与JAVA互通之DES加密V2024
    C#.NET与JAVA互通之DES加密V2024 配置视频:  环境:.NETFramework4.6控制台程序JAVA这边:JDK8(1.8)控制台程序 注意点:1.由于密钥、明文、密文的输入输出参数,都是byte数组(byte[]),所以:字符串转byte数组(byte[])环节,双方要约定好编码。2.KEY和IV从字符串转byte数......
  • WPF修改MessageBox样式(.NET6版本)
    一、问题场景使用HandyControl简写HC作为基础UI组件库时,希望系统中所有的MessageBox样式都使用HC的MessageBox,常规操作如下:在对应的xxxx.cs顶部使用using指定特定类的命名空间。usingMessageBox=HandyControl.Controls.MessageBox;这样,当前页面对应的MessageBox就都......
  • 【工具推荐】MobaXterm远程终端管理工具史上最全攻略,涉及下载、安装、字体等配置、解
    【强烈推荐】MobaXterm远程终端管理工具史上最全攻略,涉及下载、安装、字体等配置、解决中文乱码、Telnet/ssh/Serial使用教程、高级功能使用技巧等。MobaXterm是一个增强型的Windows终端。其为Windows桌面提供所有重要的远程网络终端工具(如SSH、X11、RDP、VNC、FTP、S......
  • Dynamsoft.DotNet.BarcodeReader.Bundle-10.2.1100
    DynamsoftBarcodeReaderSDK.NetEditionDynamsoftBarcodeReaderSDKenablesyoutoefficientlyembedbarcodereadingfunctionalityinyourweb,desktopormobileapplicationusingjustafewlinesofcode.Savingyoumonthsofaddeddevelopmenttime......
  • C#/.NET/.NET Core拾遗补漏合集(24年6月更新)
     前言在这个快速发展的技术世界中,时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NETCore拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节,以帮助大家更全面地了解这些技术栈的特性和发展方向。欢迎加入DotNetGuide技术社区交流群G......