多个-m命令行参数(Python)

时间:2012-11-16 20:13:49

标签: python command-line arguments

我想同时运行cProfiler(主要用于时间测量)以及我发现here的内存分析器。但是,两者都需要给出-m命令行参数,这不能很好地发挥作用。

有没有办法同时运行?我到目前为止所做的就是让口译员对我大喊大叫。

如果您需要更多信息,请告诉我,我会尽力提供。提前谢谢!

2 个答案:

答案 0 :(得分:4)

使用两个-m参数无法启动两个模块。这是因为-m之后的命令行参数都被赋予命名模块sys.argv。文档中没有明确说明,但您可以通过实验进行试用。

创建两个python文件a.pyb.py

a.py的内容:

print 'a'
import sys
print sys.argv

b.py的内容:

print 'b'

现在尝试使用两个-m参数运行:

$ python -m a -m b

输出:

a
['/home/lesmana/tmp/a.py', '-m', 'b']

正如您所见,模块b永远不会启动,因为第二个-m不是由python处理的。它被赋予模块a来处理。

答案 1 :(得分:0)

虽然现在我很明显你不能在同一个文件上使用两个-m参数,但我设法将一些解决方案整合在一起。虽然它有点圆,但并不完美。 我使用了2个.bat文件,可以看到here。左边是处理cProfiler的.bat,右边是处理内存探查器的.bat。

可以看到处理内存分析器的.bat中的python程序代码herehere

第一个程序将#添加到我的主代码here中函数正上方的行,这意味着该程序实际上可以运行,而cProfiler可以做到这一点。

第二个程序删除了#,这意味着内存分析器可以工作。

为了使这个系统能够正常使用我的布局,首先需要注释掉“@profile”。

它有点kludgey,并且可以使用一些改进来进一步自动化它(例如必须在处理内存探查器的.bat文件中指定文件的名称),但它现在可以做到。我也意识到这是一个非常具体的案例,但谁知道,也许有人和我一样处于同样的位置......