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

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

发布时间:2020-12-20 11:19:28 所属栏目:Python 来源:网络整理
导读:我正在开发一种用于对用户定义函数进行数值分析的工具. 我们的想法是在 Python中创建一个方便的UI,用户可以在其中输入C函数,然后按下按钮 – 并接收一些输出数据. 计算可能需要几分钟或几小时,因此不能接受仅限Numpy的性能. 我尝试了以下方法:基于Python的U
我正在开发一种用于对用户定义函数进行数值分析的工具.
我们的想法是在 Python中创建一个方便的UI,用户可以在其中输入C函数,然后按下按钮 – 并接收一些输出数据.
计算可能需要几分钟或几小时,因此不能接受仅限Numpy的性能.

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

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

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

谢谢!

解决方法

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

(编辑:李大同)

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

    推荐文章
      热点阅读