加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

.NET / C#与Python互操作

发布时间:2020-12-16 22:50:39 所属栏目:Python 来源:网络整理
导读:我的后端是用.NET / C#编写的,我要求我需要执行python脚本从房子的.net端传递上下文.这些在作为Windows服务运行的名为hangfire的后台任务引擎中排队. 我做了一点挖掘并找到了IronPython,然而,在实现之后它无法支持我需要在我的脚本中执行的许多pypi python包

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

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

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读