梦应逍遥 发表于 2024-6-16 22:09:03

Python使用.NET开发的类库来提高你的步伐执行服从

Python由于自己的特性原因,执行步伐期间可能服从并不是很理想。在某些必要自己提高一些代码的执行服从的时间,可以考虑使用C#、C++、Rust等语言开发的库来提高python自己的执行服从。接下来,我演示一种使用.NET平台开发的类库,来演示一下Python访问.NET类库的操作实现。类库演示包括.NET Framework、.NET Standard、.NET CORE+环境。 先安装pythonnet库https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459434-2063304286.png首先测试.net framework库能不能成功。创建一个.net framework的类库项目https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459393-1105067580.png开发一个测试类,代码如图所示,提供一个方法来输出“这是一个.net framework库的调用返回值”https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459434-917276732.png编译以后,生成的dll拷贝到我的D盘的MyDlls文件夹内备用https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459149-45517794.png创建一个python项目,调用.NET库必要先引入clr,clr.AddReference()里面添加你的类库地址。instance = FxTest();写法相当于你用C# 代码:var instance = new FxTest();来实例化一个对象。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459417-1257260257.png运行Python步伐,可以看到.net fx类库的方法被成功调用并返回。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459434-84666617.png 测试.net standard项目。新建一个.net standard2.1的项目https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459414-1487760451.png开发两个类,一个用来给Python步伐调用,一个是最终实现。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459415-254597385.png编译以后,也把类库文件丢之前的文件夹内备用。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459349-545814788.png改造下刚才的python代码,引用新的.net standard开发的类库,并运行python代码,也可以被成功调用。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459437-568428190.png再测试下.net core或以上类库环境。此处创建一个.net 8类库项目https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459369-1264640315.png同样的,也新建一个测试类,并且提供一个方法给python使用。该方法比前面测试案例多了一个参数输入。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459193-1107781916.png编译以后,也丢上面用到的文件夹内测试用。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459175-927313668.png继续改造python代码,并运行,发现出错。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459452-2079342371.png对刚才的.net8类库项目降级为.net6,再重新编译,然后替换到之前的测试用文件夹内。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459369-720548704.png再重新执行python步伐,可以看到被成功调用了。说明截止目前,pythonnet只支持到.net6或者也可能到7,7不是LTS版本我就不测试了,但是.net 6是妥妥可以运行,那就代表.net 6、.net 5、netcore3.1以及netcore3.1以下版本都是可以被支持的了。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459225-90903586.png能够使用.NET来实现一些操作给python调用的利益是,可以提高python的一些运行服从。原生python执行服从毕竟可能尴尬一点点。下面写一个例子来测试下服从差异。在netstandard类库里面新增一个累加方法:https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459413-820095273.pngPython里面写一个计时器,用来对执行方法的计时使用。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459438-1082585253.pngpython里面也新增一个累加器方法,并且对两个方法都套上上面的计时器,用于测试耗时开销。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459452-102319485.png运行步伐,检察执行效果,10000次运行,python耗时0.000997s,.NET库内的操作耗时约即是0秒https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459394-1282452220.png看不出太大效果,那就加到1000w次,得到的耗时相差,差不多147倍数。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459453-342746428.png再增大一些,1Y次,性能和上面1KW次比值基本上差不多,157倍数,取个中间值,相当于150倍性能差距。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459435-1718830944.png上面这个只是使用.net standard2.1环境,假如使用更高版本的.net类库环境,估计还会更加拉大差距。本机的python环境版本为python 3.10.6。https://img2024.cnblogs.com/blog/1995789/202406/1995789-20240616221459349-713450114.png 以上就是本文章全部内容,假如对你有帮助,欢迎关注我的个人公众号:【Dotnet Dancer】假如以上文章内容无法访问或者图片丢失,可以观看我的公众号原文文章:https://mp.weixin.qq.com/s/ABlHCDmu7yLE7_aI2Z8sIA  
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Python使用.NET开发的类库来提高你的步伐执行服从