記事公開日
最終更新日
並列処理の話(その2) Windowsでコマンドを並列実行する(前編)

(本記事の情報は、記事の公開日時点での情報であり、その正確性、完全性、最新性等内容を保証するものではありません。)
並列処理のお話しをさせていただいていますが、Windowsでコンソールコマンドを並列処理させるにはどうしたらよいでしょうか。
例として、ちょっと時間のかかるコマンドとして以下のものを使いましょう。
コマンドプロンプトを立ち上げてコマンドを打ってみてください。
C:Usersosuga>tree c:Windowsのシステムドライブを表示するため、ファイルのツリー構造が延々表示されてくると思います。
通常のコンソールコマンドの場合、コマンドを打ったら、処理が終わるまでプロンプトは返ってきません。
これを、非同期に実行するには、STARTコマンドを使います。
C:Usersosuga>start tree c:コマンドを打ったウィンドウとは別にウインドウが起動され、そちらでtreeコマンドが実行されたことと思います。
また、コマンドを打ったウインドウはtreeの終了を待たずに次のコマンド入力待ちのプロンプトが出ているはずです。
次に、このコマンドを2つ同時に実行してみます。
メモ帳を起動してバッチファイルを作成します。
C:Usersosuga>notepad tst.bat
これを保存し、実行してみてください。
C:Usersosuga>tst.bat先ほどと同じtreeコマンドを実行するウインドウが今度は2つ出て、同時に実行されます。
データ加工に使用するETLツールには、コマンドラインからの起動を行う機能が装備されているはずですから、treeコマンドと同じように複数の加工ジョブ(加工手順を実行する単位)を並行動作させることが可能です。
(ツールによっては外部から並行起動を許していないものや、同じジョブを同時に起動できないものがあるので注意が必要です)
このように、コンソールコマンドを同時に起動するのはごく簡単です。
しかし、これでは困ることがあります。
コマンドの終了待ちが行われないの後続の処理が待たずにすぐに実行されてしまいます。
きちんと処理を行うためには、2つのコマンドが終了したことを、どうにかして判断する必要があります。
大きなプロジェクトでは運用ツールを使ってジョブの実行順制御を行うのですが、次回は、これをバッチプログラム中で簡単に実行する方法を解説します。
関連コンテンツ
並列処理の話(その1) ~変換処理の並行動作について(前編)~
並列処理の話(その1) ~変換処理の並行動作について(後編)~
並列処理の話(その2) Windowsでコマンドを並列実行する(後編)
並列処理の話(その4) ハイパースレッディング・テクノロジー





