子流程.Popen执行.sh的方式与执行subprocess.call的方式不同



我正试图从子进程运行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时没有正确完成。当对Popen使用.wait()或. communication()时也会发生这种情况。我要做的是暂停代码的执行,直到parsey完成。我不知道这是怎么回事。

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

当一切正常时

INFO:tensorflow:处理了10个文档信息:tensorflow:总处理文件:10INFO:tensorflow:num正确的令牌:0信息:tensorflow:总令牌:170信息:tensorflow:评估时间:0.18,评估度量:0.00%INFO:tensorflow:处理了10个文档信息:tensorflow:总处理文件:10信息:tensorflow:num正确的令牌:10INFO:tensorflow:总令牌:153INFO:tensorflow:Seconds elapsed in evaluation: 0.86, eval metric: 6.54%

当他们没有。

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

你确定它会完成吗?

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

subprocess.call()等待,直到wait()communicate()完成

最新更新