Csharp/C#教程:.NET / C#与Python互操作分享


.NET / C#与Python互操作

我的后端是用.NET / C#编写的,我要求我需要执行python脚本从房子的.net端传递上下文。 这些在作为Windows服务运行的名为hangfire的后台任务引擎中排队。

我做了一点挖掘并找到了IronPython ,然而,在实现之后它无法支持我需要在我的脚本中执行的许多pypi python包。

其次,我查看了Python.Net ,它是一个嵌入式解释器,嵌入或扩展了CPython。 CPython可以运行我需要的所有脚本/等等,但是,我发现一直打开/关闭python解释器会产生很多内存泄漏,并且总是存在线程约束。 有关详细信息,请参阅文档 。

我想知道.net中的这个interopt和嵌入python是否是一个好主意。 我想知道是否使用像celery之类的东西使python成为自己的执行引擎,并使用protobufs之类的东西编组数据将是一个更好的解决方案? 这给我的堆栈增加了更多的复杂性和额外的任务引擎。

我想知道是否有其他人有任何想法/反馈/经验试图完成类似的事情? 谢谢!

我认为pythonnet是你最好的选择:

上述就是C#学习教程:.NET / C#与Python互操作分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  1. 嵌入式Python解释器与Python子解释器不同。 子解释器使用得更少,而CPython已嵌入主要应用程序中。 此外,由于pythonnet为您处理此事,因此内存泄漏应该是非常不可能的。
  2. 嵌入式解释器不必在调用它之间关闭 – 实际上这可能会非常昂贵,只要应用程序处于活动状态,就可以保持持久性。
  3. 如果using (Py.GIL()) {}块包含需要GIL的代码,则可以避免线程问题。
  4. 使用PTVS在混合模式下调试CPython / .NET代码的额外好处。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/942362.html

(0)
上一篇 2021年11月13日
下一篇 2021年11月13日

精彩推荐