Python:在循环中避免太多文件

时间:2017-12-22 21:58:56

标签: python matlab

我有一些Python程序,它由一个大循环组成,每个迭代调用Matlab并执行其他一些操作。

由于pymatbridge存在一些问题,我每10次迭代就会打开一个与Matlab的新连接。但现在,经过1000次迭代后,我收到错误Too many open files (src/epoll.cpp:50),程序崩溃为Abgebrochen (Speicherabzug geschrieben)(意为Aborted (core dump written))。 我认为这是由于Matlab连接。

我的代码结构如下所示:

matlab = Matlab(startup_options='-useStartupFolderPref -nosplash -nodesktop',log=True)
matlab.start()

for todo in todo_list:
#DIRTY HACK to keep matlab from stopping: every 10 steps create new connection
  if todo[0] % 10 == 0:
    matlab.stop()
    matlab = Matlab(startup_options='-useStartupFolderPref -nosplash -nodesktop',log=True)
    matlab.start()
    [call Matlab and do other stuff]

如何避免此错误?

备注:pymatbridge的问题在于,经过一些非常固定的调用后,它才会停止。见https://github.com/arokem/python-matlab-bridge/issues/255,其他人描述了这个问题。 如果有人知道解决方案,那也会有所帮助。

我正在使用

  • Python 3.4.6
  • pyzmq 17.0.0b3
  • pymatbridge 0.5.2
  • Matlab R2017a

0 个答案:

没有答案