我有一个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()
,但结果没有差异。
答案 0 :(得分:2)
谢谢@KSFT; subprocess.call()
在命令完成之前不会返回,但subprocess.Popen()
会执行。所以我使用subprocess.Popen()
然后time.sleep(0.5)
拨打了电话。让python脚本等待0.5秒允许java文件有足够的时间打开并初始化套接字连接。
答案 1 :(得分:1)
subprocess.call()
在它运行的命令完成之前不会返回。您可以使用multithreading同时运行其他内容。