Python运行时:重新编译和重用C库

我正在开发一种用于对用户定义函数进行数值分析的工具.

我们的想法是在
Python中创建一个方便的UI,用户可以在其中输入C函数,然后按下按钮 – 并接收一些输出数据.

计算可能需要几分钟或几小时,因此不能接受仅限Numpy的性能.

我尝试了以下方法:基于Python的UI调用gcc,从用户函数编译dll,这是我在Cython包装中使用的基于C的核心算法所使用的.它工作,但由于没有办法完全卸载python模块,我不能重新编译用户定义的函数,直到整个UI程序关闭并再次运行.

我现在看到的唯一方法是分离计算核心和UI流程,然后通过共享内存/消息传递使它们进行交互.当用户想要更新他的功能时,程序终止核心,重新编译DLL并再次启动核心.

在这种情况下你能建议任何常见做法吗?

谢谢!

最佳答案 Python有非常好的
multiprocessing支持(并且实际上不是非常好的线程支持),所以你可以为每个要评估的表达式生成一个新的python进程,在新进程中编译和加载dll,然后让它将结果传回给父进程.当生成的进程退出时,应该卸载所有内容.

点赞