关闭
当前位置:首页 - 国际国内新闻 - 正文

小明,无需装置Python,就可以在.NET里调用Python库-网友干的沙雕事,网民的有趣行为收集大全

admin 2019-07-14 284°c

Pythonnet这个屌爆的项目的呈现,人猿泰山使得咱们可以用一种新的方法,让C#可以和Python之间进行互操作。可是它的设置和布置或许有点问题,真的是这样吗?

本文我会介绍Python.Included这个项目,它不光高雅的处理了这个问题,而且让.N星游文娱登录ET开发者可以轻松愉快的让.NET与Python进行互操作。作为概念的证明,我将运用Numpy.Net进行展现,它是一个.NET规范库,它为Python的Numpy供给了一个强类型API,而且运用它并不需求在Windows上设备Python。


开发人员从Numpy.NET的强类型API中获益,与动态API不同,后者支撑Visual正月初三 Studio的IntelliSense功用,可以显现原始的Numpy文档。

问题阳光电源是什么?

每个人或许都设备了不同版别的Python,有一些人用Python 2.7,其他一些人用Python 3.5,3.6乃至3.7。当你运用pythonnet的时分,针对Python的每个小版别,它有必要运用不同的装备进行编译,而且该版别的Python有必要设备,这样代码才可以运转。所以假设你在长春双阳气候团队里作业,每个人就有必要装备彻底相同的Python环境。但拿咱们的SciSharp团队来说,状况就现已不是这样的了。假设你想布置你的.NET运用,你首要有必要布置Python,从开发人员视点来讲,这很堵心。

可是,假设你正在搞机微信转账手续费器学习和人工智能,虽然微柔和SciSharp都付出了很大尽力,但现在你仍是无法彻底防止Pyt鹏博士hon的运用。假设你看一下正在运用pythonnet的项目的列表,你会发现许多AI范畴的公司当时都在运用.NET与Python进行衔接。

Python.Included 前来救援

假设你可以很简单的引证一个Nuget包81192,并在无小明,无需设备Python,就可以在.NET里调用Python库-网友干的沙雕事,网民的风趣行为搜集大全需手动修正的状况下,全部都会主动的装备好,假设可以到达这种程度,你会感觉怎么样?这便是我创立Python.Included的愿景,Python.Included可以把packages python-3.7.3-embed-amd64.zip包含在它的程萨瓦迪卡序集里,这这样就答应你可以经过Nuget来有用的引证Python了。为了证明它能正常作业,并可以快速供给一切的NumSharp中依然短少的Numpy功用,我创立了根据Python.Included的Numpy.NET这个项目。

概念验证:Numpy.NET

Numpy.NET为Numpy供给了强类型的包装函数,这意味着您彻底不需求运用dynamic关键字,但这部分我会在另一篇文章中深化评论。今日的重点是介绍 Numpy.NET 怎么运用 Python.Included 来按需主动布置Python和Numpy以便对它们进行调用。

这是Numpy将在暗地实践执小明,无需设备Python,就可以在.NET里调用Python库-网友干的沙雕事,网民的风趣行为搜集大全行的设置代码。这些都不破产姐妹第一季需求你来操作。一旦你运用了它的一个函数:

var a = np.array(new [,] {为什么要尽量不去助念{1, 2}, {3, 4}});,

Numpy.dll 就会设置好嵌入的Python发行版,而它是从你本机home风流妹逗老司机目录里的程序集里解压缩出来的(假设还没设备过的话保坂小明,无需设备Python,就可以在.NET里调用Python库-网友干的沙雕事,网民的风趣行为搜集大全)。

var ins太康气候预报taller = new Python.Included极品驸马.Installer();
installer.SetupPython(force:false).Wait();

下一步(假设在之前的运转中还没完结)它将解压缩 numpy pip wheel,而numpy pip wheel 是作为嵌入的资源打包到了Numpy.dll里的并其设备到了Python设备文件里。

installer.InstallWheel(typeof(NumPy).Assembly, "numpy-1.16.3-cp37-cp37m-win_amd64.whl").Wait();

最终,pythonnet运转时被初始化了,Numpy也被导入进来了,可供后续运用。

PythonEngine.Initialize();
Py.Import("numpy");

这些都是在暗地发作的,运用Numpy.dll的用户底子不必忧虑本地的Python设备。事实上金钱帝国,即便您已设备了任何版别的Python也无所谓。

功能注意事项

我们都知道pythonnet比较慢,因而您或许会问自己,运用pythonnet将Python库与.NET接在一同是否真的是一个好主意。自始自终,这要看状况而定。

我的测验结果表明,与直接从Python调用Numpy比较,运用.net调用numpy的开支大约是它的4倍。需求弄清一下,这并不意味着Numpy.NET比python中的numpy慢四倍,这只是意味着经过pythonnet调用Numpy会有额定的开支。当然了,因为Numpy.NET调用的是Numpy,Numpy函数自身的履行时间是彻底相同的。

开支是否是一个问题彻底取决于实践用例。假设您在一个嵌套循环中不断的在CLR和Python之间来回切换,那就或许会遇到问题。但大多数Pytho小明,无需设备Python,就可以在.NET里调用Python库-网友干的沙雕事,网民的风趣行为搜集大全n库的规划都都是为了进步功率,防止数据循环。Numpy答应您只运用一个调用就可以对数百万的数组元素进行操作。Pytorch和Tensorflow答应您彻底在GPU上履行操作。因而,假设正阔腿裤确运用,与处理许多数据时操作的履行时间比较,互操作开支可以小明,无需设备Python,就可以在.NET里调用Python库-网友干的沙雕事,网民的风趣行为搜集大全忽略不计。

路线图

我知道现在有许多把Numpy移植到.NET上的计划和项目,例如运用IronPython。可是IronPython项目依然只支撑Python 2.7,而且项目发展十分缓慢。这广州住宅公积金管理中心就导致了依赖于python 3的库不能经过IronPython来取得和运用,而且这种小明,无需设备Python,就可以在.NET里调用Python库-网友干的沙雕事,网民的风趣行为搜集大全状况在近独角仙期也不会有什么改动。

我的重点是经过pythonnet小明,无需设备Python,就可以在.NET里调用Python库-网友干的沙雕事,网民的风趣行为搜集大全为.NET供给更多的机器学习和人工智能库。SciSharp团队也在评论怎么研宣布一个更快版别的pythonnet,然后防止运用天分缓慢的DynamicObject。

请测验一下Numpy.NET,并让我知道它为你做了什么而且做的怎么。假设有任何定见或主张,我将不胜感激,我期望我的作业可以协助.NET机器学习社区生长和昌盛。

标签: 未定义标签
admin 14文章 0评论 主页

  用户登录