正在尝试在c中嵌入python
运行是ok了.但因为写的是一个长时间运行后台程序,所以肯定不能有内存泄漏的
调试了很长时间,最终发现我不做任何操作,只是单纯的循环char *callpy(){ Py_Initialize(); Py_Finalize(); return "1:2,3:4";}
这个.就会导致大量内存泄漏,程序的内存占用量在彪升~~
我还在google,有些人也遇到的这种情况,并提交了bug,当然我为了进一步的原因,我还在google
不知道这里有人遇到这种情况吗?应该有不少人在c中嵌入python吧~~
在补充下
http://bytes.com/groups/python/465131-problem-multiple-py_initialize-py_finalize-calls
看这个帖子说的很明白了...不过的他的python版本是2.3而我的是2.5
我也有google到一些结果说修复了此bug,不知道是什么版本?
还有的说这是python的1-time机制,当然,不释放虚拟机的初始化内存我能理解,但是不断的增加内存占用量就不是什么1-time了吧
呵呵
看起来似乎解决了...
头疼了我两天的问题...
和上个帖子的链接里那位兄弟说的一样..."是不是方法不对"
果然..我把callpy这个函数中的 Py_Finalize();去掉就正常了[或者放在main里,应该是更好的方法,呵呵]...大�,看来作为一个长时间后台运行deamon...我是永远不需要Py_Finalize();了...
也算是给大家提供点经验吧~~~py的虚拟机只要启动一次就好了...千万不要自作聪明
How do I stop Py_Initialise crashing the application?
From VBA and VB6 I'm calling a dll the creates a Python interpreter. If I set the PATH
environment variable to point to "C:\python27"
and PYTHONPATH
to "c:\python27\lib"
all is fine.