Python:subprocess.Popen永远不会返回
我已经编写了一个Python脚本,它使用运行一些svn命令。例如: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
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。