4

Python を使用しsubprocess.call()て、それぞれが Matlab スクリプトを実行する一連の python スクリプトを実行しています。問題は、最初の 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

ラバーダックのデバッグでこれを解決したようです。

同期的に実行される call() ではなく、非同期的に実行される Popen() を介して MATLAB スクリプトを呼び出していました。Popen のすべてのインスタンスを呼び出すように変更すると、問題が解決したようです。

于 2012-10-08T20:00:35.787 に答える