繁体   English   中英

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

[英]subprocess.Popen executes .sh differently then 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()或.communicate()时,也会发生这种情况。 我想做的是暂停执行代码,直到parsey完成。 不知道这是怎么回事。

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

当一切正常时

INFO:tensorflow:已处理的10个文档INFO:tensorflow:已处理的文档总数:10 INFO:tensorflow:正确的令牌数量:0 INFO:tensorflow:总令牌:170 INFO:tensorflow:评估的秒数:0.18,评估指标:0.00%INFO :tensorflow:已处理的10个文档INFO:tensorflow:已处理的文档总数:10 INFO:tensorflow:正确的令牌数:10 INFO:tensorflow:总令牌:153 INFO:tensorflow:评估的第二秒:0.86,评估指标:6.54%

当他们没有。

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

您确定它完成了吗?

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

subprocess.call()等到完成为止,如wait()communicate()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM