我有一个自定义 python 模块,它使用多进程 python 库在多核上运行 CPU 密集型任务。该函数还有一些 numpy 和 scipy 库用于计算梯形或辛普森法则。
我必须从 C# (.NET Framework 4.8) 调用 python 模块,我正在寻找选项并按优先顺序想到了 3 个可能的选项。
pythonnet
支持Python并受到.NET基金会推荐,因此这是我的第一选择。
但是看起来他们不支持多进程,因为他们使用下面示例中的 GIL 锁 - GitHub
我的伪代码写在下面。当我运行多进程“area.py”文件时,我的系统崩溃了,如果没有启用 Py.GIL() 语句,我就无法运行,因为这会引发内存保护错误。
static void Main(string[] args)
{
PythonEngine.Initialize();
using (Py.GIL())
{
var script= Py.Import("area");
script.InvokeMethod("area");
}
}
铁蟒
可执行文件
下一步
嗨,帕万苏塔·霍萨格拉哈拉·达克辛 您是否能够找到问题的解决方案? 我有同样的问题。 您最终将 python 代码移植到 c# 了吗?