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

标签 java python 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(),结果没有任何差异。

最佳答案

谢谢@KSFT; subprocess.call() 在命令完成之前不会返回,但 subprocess.Popen() 会返回。因此,我使用 subprocess.Popen() 进行调用,然后使用 time.sleep(0.5) 进行调用。让 python 脚本等待 0.5 秒可以让 java 文件有足够的时间打开和初始化套接字连接。

关于java - Python 脚本在调用子进程后不继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29464145/

相关文章:

java - tomcat上的文件监听进程

java - 扫描仪输入 - 输入流结束指示器

java - NumberFormat.parse() 对某些货币字符串失败

Python Pandas DataFrame str 包含合并如果

python - 当元素为 "huge"时,Selenium 元素未滚动到视口(viewport)中

Python-Twitter 脚本在家里工作,而不是在大学工作。截止日期真的很快

python - 无法使用 win32 dir 命令和 Python 子进程查看文件

python - 将输出分配给变量而不是输出文件

java - Tomcat 在 Web 浏览器中工作,但不在 Eclipse 中工作

python - 如何获得subprocess.check_output()函数返回的错误?