繁体   English   中英

c扩展Python内存泄漏,为什么?

[英]c-extension Python memory leak,why?

最近我有一个用C编写的项目,并在中扩展了Python,我在while循环中调用了Python,结果是内存增长从未停止。

这是代码:

main
{
   while True {
      if( SUCCESS != PyInit())
      {
          return -1;
      }
      PyDone();
      usleep(1000);
      } 
}


int PyInit(void)
{
         Py_Initialize(); 
         if(!Py_IsInitialized())
         {
              printf("PyInit: Python Init fail!\n");
              return FAILURE;
         }
         else
         {
              printf( "Python Init succ!\n");
              return SUCCESS;

         }

}

void PyDone(void)
{
         Py_Finalize();
}

最后我的英语不好,希望我已经清楚地描述了这个问题。

for (;;) {
    PyInitialize();
    if (PyIsInitialized()) {
        PyFinalize();
        usleep(1000);
    }
}

如果您的代码与此类似,并且似乎存在内存泄漏,则python实现有问题,因为PyFinalize应该“释放了Python解释程序分配的所有内存”。 关于PyFinalize,Python站点指出:“可能无法释放Python解释器分配的少量内存(如果发现泄漏,请报告)。” 通过python bug跟踪器搜索是否存在泄漏表明尚未报告,因此我建议将此bug报告给他们的bugtracker

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM