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

时间:2015-04-06 01:17:41

标签: 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(),但结果没有差异。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

subprocess.call()在它运行的命令完成之前不会返回。您可以使用multithreading同时运行其他内容。