cextension Python内存泄漏,为什么?

2024-10-01 00:14:37 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我有一个用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();
}

最后我的英语很差,希望我能把这个问题描述清楚。在


Tags: 项目内存代码pytruereturnifinit
1条回答
网友
1楼 · 发布于 2024-10-01 00:14:37
for (;;) {
    PyInitialize();
    if (PyIsInitialized()) {
        PyFinalize();
        usleep(1000);
    }
}

如果您的代码与此类似,并且似乎存在内存泄漏,那么python实现就有问题,因为PyFinalize应该“释放python解释器分配的所有内存”。关于PyFinalize,python站点声明,“python解释器分配的少量内存可能无法释放(如果发现泄漏,请报告它)。”,通过python bug tracker搜索leak表明尚未报告此问题,因此我建议向他们的bugtracker报告此错误。在

相关问题 更多 >