示例代码:
import subprocess
subprocess.call(['java', '-jar', 'temp.jar'])
Run Code Online (Sandbox Code Playgroud)
如何在上面的命令中指定JAVA_OPTS?当我使用上面的命令时,我得到'java.lang.OutOfMemoryError:无法创建新的本机线程',我认为在命令中指定JAVA_OPTS可以解决问题.
我确实在.bashrc文件中指定了JAVA_OPTS,它没有任何效果.
and*_*otn 12
你可以做到这一点,但在文档中找到如何做到这一点是一种疯狂的追逐.
subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)上面显示的参数仅仅是最常见的参数,在下面的常用参数中进行了描述(因此缩写签名中的略微奇怪的符号).
这些选项以及所有其他选项在
Popen构造函数文档中有更详细的描述.
好吧!该Popen文档提供了完整的签名:
class subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
env是你想要的!但是,如果你只是传递env={'JAVA_OPTS': 'foo'},那么它将覆盖所有环境变量,包括CLASSPATH可能破坏其他东西的东西.因此,您可能希望使用这样的代码JAVA_OPTS为新流程执行添加环境变量,而无需在当前流程中进行设置:
#!/usr/bin/env python2.7
import os
import subprocess
# Make a copy of the environment
env = dict(os.environ)
env['JAVA_OPTS'] = 'foo'
subprocess.call(['java', '-jar', 'temp.jar'], env=env)
Run Code Online (Sandbox Code Playgroud)
没有必要使用JAVA_OPTS - 只需要传递更多的参数call().例如:
import subprocess
subprocess.call(['java', '-jar', 'temp.jar', '-Xmx1024m', '-Xms256m'])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14998 次 |
| 最近记录: |