我正在尝试从子进程运行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")
两者执行时都不会抛出任何错误,但是在运行.call时,parsey不能正确完成。将.wait()或.communicate()与Popen一起使用时也会发生这种情况。我想要做的是暂停代码的执行,直到parsey完成。不知道这是怎么回事。
编辑。当我说parsey没有正确完成时,我的意思是我从运行demo.sh文件得到了不同的最终结果。以下是不同的输出。
当事情运行正常时
信息:tensorflow:已处理10个文档信息:tensorflow:已处理文档总数: 10信息:tensorflow:正确令牌数:0信息:tensorflow:令牌总数: 170信息:tensorflow:评估耗时秒数: 0.18,eval指标: 0.00%信息:tensorflow:已处理10文档信息:tensorflow:已处理文档总数: 10信息:tensorflow:正确令牌数: 10信息:tensorflow:令牌总数: 153信息:tensorflow:评估耗时秒数: 0.86,评估指标:6.54%.
当他们不这样做时。
信息:tensorflow:已处理文档总数:0信息:tensorflow:已处理文档总数:0
发布于 2016-09-12 02:46:58
你确定它会结束吗?
看起来你的代码挂起了。也许它需要用户输入?
与wait()
和communicate()
一样,subprocess.call()
也会等待,直到它完成
https://stackoverflow.com/questions/39439385
复制相似问题