4

我正在使用 Pythonsubprocess.call()运行一系列 python 脚本,每个脚本都运行 Matlab 脚本。麻烦的是,一旦第一个 Matlab 脚本结束。

外部 Python 脚本解析 csv 文件目录,以根据 csv 文件的每一行进行设置以运行实验。对于每个实验,它调用一个 python 程序来运行解析数据并输入 Matlab。Matlab,然后运行每个实验。除了第一次运行 matlab 后整个事情都退出了。Matlab 退出它的子子进程会导致整个事情崩溃吗?

 for line in csvfile:
      if debug:
          print 'Experiment %d' % count

      ts = line.split(',')
      startStamp=ts[0]
      cmdargs = ['python prep_lssvm.py']
      cmdargs.append(str(site))
      cmdargs.append(str(startStamp))
      cmdargs.append(str(daysTraining))

      if debug:
          print cmdargs

      for i in range(len(argv)-2):
          cmdargs.append(str(argv[i+2]))

      command = ' '.join(cmdargs)

      if debug:
          print command

      call(command,shell=True)
      #Never goes past here<<<<<<=======================
      dirname = ''.join([site,'_',str(count)])
      mkdir(dirname)
      call(''.join(['mv ',site,'/*.txt ',dirname]),shell=True,stdout=outfile)
4

1 回答 1

0

看来我已经通过橡皮鸭调试解决了这个问题。

我通过异步执行的 Popen() 调用 MATLAB 脚本,而不是同步执行的 call()。将所有 Popen 实例更改为 call 似乎已经解决了这个问题。

于 2012-10-08T20:00:35.787 回答