我有一个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文件有足够的时间打开并初始化套接字连接。
subprocess.call()
在运行的命令完成之前不会返回。您可以使用多线程同时运行其他程序。