.NET/C与Python的互操作

2024-10-04 11:29:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我的后端是用.NET/C#编写的,我有一个要求,我需要执行从.NET端传递上下文的python脚本。它们在作为windows服务运行的名为hangfire的后台任务引擎中排队。在

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

其次,我研究了Python.Net,它是一个嵌入或扩展CPython的嵌入式解释器。CPython可以运行我所需要的所有脚本/etc,但是,我发现一直打开/关闭python解释器会造成相当多的内存泄漏,而且总是存在线程约束。请参见docs了解一些详细信息。在

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

我想知道有没有其他人有什么想法/反馈/经验来完成类似的事情?谢谢!在


Tags: 内存引擎脚本pypinetwindowsetccpython
1条回答
网友
1楼 · 发布于 2024-10-04 11:29:20

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

  1. 嵌入式Python解释器与Python子解释器不同。子解释器的使用要少得多,而CPython已经嵌入到主要应用程序中。此外,内存泄漏应该是非常不可能的,因为pythonnet会为您处理这个问题。在
  2. 嵌入式解释器不必在两次调用之间关闭——事实上,这可能会非常昂贵,只要应用程序还在运行,就可以保持它的持久性。在
  3. {{{cd2>可以避免使用
  4. 使用 PTV。在

相关问题 更多 >