Python:subprocess.Popen永远不会返回

Python:subprocess.Popen永远不会返回,python,subprocess,threadpool,Python,Subprocess,Threadpool,我已经编写了一个Python脚本,它使用运行一些svn命令。例如: svn ls svn+ssh://url1/trunk svn cp svn+ssh://url1/trunk svn+ssh://url1/branch/1 --parents -m "blah" 对于每个命令,我创建一个subprocess.Popen对象: p = subprocesp.Popen(cmd, shell=True, stdout=sp.PIPE, stderr=sp.STDOUT) 然后等待它完成: o

我已经编写了一个Python脚本,它使用运行一些svn命令。例如:

svn ls svn+ssh://url1/trunk
svn cp svn+ssh://url1/trunk svn+ssh://url1/branch/1 --parents -m "blah"
对于每个命令,我创建一个subprocess.Popen对象:

p = subprocesp.Popen(cmd, shell=True, stdout=sp.PIPE, stderr=sp.STDOUT)
然后等待它完成:

output      = p.communicate()[0].strip()
return_code = p.returncode
问题是,对于一些在shell上复制不存在的回购而立即失败的
svn cp
命令,
p.communicate()
永远不会返回

额外资料:

  • 代码使用线程池(
    multiprocessing.pool.ThreadPool
    )执行
  • 这种现象只因失败而受到惩罚
  • 使用shell,完全相同的命令在不到两秒钟内完成,错误代码为1

你知道我遗漏了什么吗?

奇怪的是,问题出在Eclipse上。脚本在shell中运行得非常好,但在内部Eclipse终端中会一直等待。

您的帖子提示我使用Visual Studio测试同样的内容。。适用于REPL,但不适用于VS2015。