我想同时运行cProfiler(主要用于时间测量)以及我发现here的内存分析器。但是,两者都需要给出-m命令行参数,这不能很好地发挥作用。
有没有办法同时运行?我到目前为止所做的就是让口译员对我大喊大叫。
如果您需要更多信息,请告诉我,我会尽力提供。提前谢谢!
答案 0 :(得分:4)
使用两个-m
参数无法启动两个模块。这是因为-m
之后的命令行参数都被赋予命名模块sys.argv
。文档中没有明确说明,但您可以通过实验进行试用。
创建两个python文件a.py
和b.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程序代码here和here。
第一个程序将#添加到我的主代码here中函数正上方的行,这意味着该程序实际上可以运行,而cProfiler可以做到这一点。
第二个程序删除了#,这意味着内存分析器可以工作。
为了使这个系统能够正常使用我的布局,首先需要注释掉“@profile”。
它有点kludgey,并且可以使用一些改进来进一步自动化它(例如必须在处理内存探查器的.bat文件中指定文件的名称),但它现在可以做到。我也意识到这是一个非常具体的案例,但谁知道,也许有人和我一样处于同样的位置......