为什么python在子进程退出时停止?

时间:2012-10-08 03:50:20

标签: python matlab subprocess

我正在使用Python的subprocess.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)

1 个答案:

答案 0 :(得分:0)

我似乎通过橡皮鸭调试解决了这个问题。

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