Python 脚本在调用子进程后不继续

Python script not continuing after calling subprocess

我有一个 python 脚本调用带有 subprocess 模块的 java 文件:

import subprocess
java_cmd = ['java', '-cp', 'bin/stuff/:lib/asm-all-3.3.jar:lib/jdom.jar',
      'ch.idsia.scenarios.Main']
subprocess.call(java_cmd, shell=False)
print "Hello world"

这工作正常,然后 java 文件等待 python 脚本继续并连接套接字,如我所愿。但是 python 脚本不会继续。为什么不?我知道这不是因为 print 语句永远不会执行。

当我从 Eclipse 手动 运行 java 文件,然后从命令行执行 python 脚本时,运行 一切都如预期。 我也尝试使用 subprocess.Popen() 而不是 subprocess.call(),结果没有区别。

subprocess.call() doesn't return until the command it runs finishes. You can use multithreading 同时 运行 其他内容。

谢谢@KSFT;在命令完成之前,subprocess.call() 不会 return,但 subprocess.Popen() 会。所以我用 subprocess.Popen() 然后 time.sleep(0.5) 打了电话。让 python 脚本等待 0.5 秒允许 java 文件有足够的时间打开和初始化套接字连接。