C中嵌入python问题解答

本文讨论了在C程序中嵌入Python解释器时遇到的内存泄漏问题。作者发现重复调用Py_Initialize()和Py_Finalize()会导致内存占用持续增长。通过去除Py_Finalize()或将其移至合适位置,成功避免了内存泄漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



正在尝试在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.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值