2016-09-11 12 views
0

サブプロセスからparsey mcparsefaceを実行しようとしています。私はPopenと呼出しを実行するときに異なる結果を得て、なぜこれが不思議に思っています。 これは機能します。サブプロセス.Popenはサブプロセスプロセスと異なる方法で.shを実行します

process = subprocess.Popen("./syntaxnet/demo.sh", cwd="/home/kahless/models/syntaxnet") 

これはありません。

process = subprocess.call("./syntaxnet/demo.sh", cwd="/home/kahless/models/syntaxnet") 

どちらもpythonを実行してもエラーは発生しませんが、実行中は.call parseyが正しく完了しません。これは、Popenで.wait()または.communicate()を使用する場合にも発生します。私がしようとしているのは、パースが終了するまで、自分のコードの実行を一時停止することです。ここで何が起こっているか分かりません。

編集。パーシーが正しく完了しないと言うと、私はdemo.shファイルを実行することとは異なる最終結果を得ていることを意味します。ここには異なる出力があります。

物事が正しく

INFO仕事:tensorflow:加工10の文書 INFO:tensorflow:総処理された文書:10 INFO:tensorflow:NUM正しいトークン:0 INFO:tensorflow:合計トークン:170 INFO :テンソルフロー:評価で経過した秒数:0.18、evalメトリック:0.00% INFO:テンソルフロー:10個のドキュメントを処理しました INFO:テンソルフロー:合計処理ドキュメント:10 INFO:テンソルフロー:num正しいトークン:10 INFO:テンソルフロー:トータルトークン:153 INFO:テンソルフロー:評価で経過した秒数:0.86、e収益金額:6.54%

そうでない場合。

INFO:tensorflow:総処理された文書:0 INFO:tensorflow:総処理された文書:0

+2

communicate()それが終了するまで。 –

+0

もちろん、出力を表示するために私の答えを更新しました。あいまいになるのは残念です。 – Kahless

+0

コールブロックPopenはしません。 –

答えて

0

あなたはそれが今までに終了しましたか?

コードがハングしているようです。ユーザー入力が必要なのでしょうか?

subprocess.call()待機parseyが完了correctly`をしていない `定義してくださいwait()ように

+0

ユーザー入力は必要ありません。しかし、私はdemo.shファイルが他のスクリプトを呼び出すかもしれないと思います。私は本当にわからない。コードhttps:// githubへのリンクがあります。com/tensorflow/models/blob/master/syntaxnet/syntaxnet/demo.sh – Kahless

+0

入力がstdinからのものであると思われます。ユーザ入力を意味します。 – Bharel

+0

申し訳ありませんが、あなたが何を意味していたのか分かりません代わりに、ファイルから入力を取得するように設定することができます。これはdemo.shスクリプトを直接実行するときに機能します。 – Kahless

関連する問題