subprocess.Popen以不同于subprocess.call的方式执行.sh

时间:2016-09-11 18:35:54

标签: python

我正在尝试从子进程运行parsey mcparseface。我在运行Popen vs call时获得了不同的结果,我想知道为什么会这样。 这很有效。

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无法正确完成。将.wait()或.communicate()与Popen一起使用时也会发生这种情况。我正在尝试做的是暂停执行我的代码,直到完成parsey。不知道这里发生了什么。

编辑。当我说parsey没有正确完成时,我的意思是我从运行demo.sh文件得到了不同的最终结果。以下是不同的输出。

当事情正常时

INFO:tensorflow:处理了10个文档 信息:tensorflow:处理的文件总数:10 INFO:tensorflow:num correct tokens:0 信息:tensorflow:总代币:170 INFO:tensorflow:评估过去的秒数:0.18,eval指标:0.00% INFO:tensorflow:处理了10个文档 信息:tensorflow:处理的文件总数:10 INFO:tensorflow:num correct tokens:10 信息:tensorflow:总代币:153 INFO:tensorflow:评估中经过的秒数:0.86,eval指标:6.54%

当他们不这样做时。

INFO:tensorflow:已处理的文档总数:0 INFO:tensorflow:处理的文档总数:0

1 个答案:

答案 0 :(得分:0)

你确定它完成了吗?

看起来您的代码挂起了。也许需要用户输入?

subprocess.call()一直等到wait()communicate()

完成