【问题标题】:Python - Interactive mode vs. normal invocation of the interpreterPython - 交互模式与解释器的正常调用
【发布时间】:2011-10-01 19:30:11
【问题描述】:

这两种模式在资源方面,尤其是内存方面有区别吗?我在标题中指的是 Python,但如果对许多解释语言(Octave 等)有一个共同的解释,那将非常有帮助。

谢谢

【问题讨论】:

  • 我不确定在什么情况下您会希望在资源至关重要的情况下使用交互模式?
  • 好吧,我认为这个问题没有有用的答案。如果你能想出一个用例,那么就可以在相同的情况下实际测试两者的资源使用情况。

标签: python interpreted-language interactive-mode


【解决方案1】:

看起来交互式进程确实使用了更多内存:比较

malkovich@malkovich:/etc$
malkovich@malkovich:/etc$ python -c 'import time; time.sleep(20000)' &
[1] 3559
malkovich@malkovich:/etc$ pidstat -r -p $!
Linux 2.6... (malkovich)        11-10-01        _x86_64_        (4 CPU)

08:11:41 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
08:11:41 PM      3559      0.00      0.00   27872   4412   0.12  python
malkovich@malkovich:/etc$ kill %1
malkovich@malkovich:/etc$
[1]+  Terminated              python -c 'import time; time.sleep(20000)'

malkovich@malkovich:/etc$ python
Python 2.6.6 (r266:84292, Sep 15 2010, 16:22:56)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> time.sleep(20000)
^Z
[1]+  Stopped                 python
malkovich@malkovich:/etc$ jobs -p
3881
malkovich@malkovich:/etc$ pidstat -r -p 3881
Linux 2.6... (malkovich)        11-10-01        _x86_64_        (4 CPU)

08:16:10 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
08:16:10 PM      3881      0.00      0.00   34856   5072   0.14  python

RSS(驻留内存使用)值是一个有趣的值:交互式进程大约多出 650 kB。

我预计这个值(差异)会随着使用而有所增加,但不会显着增加,这仅仅是因为交互式会话中提供了命令历史记录和其他细节。我认为这不会有显着差异,但您可能希望针对您的特定情况运行类似的测试。要将正在运行的解释会话作为后台运行,请按字面意思按 ^Z (CTRL-Z)。

但总的来说,除非您在只有几 MB RAM 的嵌入式系统上运行,否则我认为差异不会很大。

请注意,如果您将代码编写为模块然后导入它,它将被编译为字节码并保存。我相信这会减少内存消耗并减少后续调用的启动时间。您可能需要运行一些测试来了解差异。

【讨论】:

  • 谢谢老哥,很有帮助
猜你喜欢
  • 1970-01-01
  • 2017-05-16
  • 2018-07-11
  • 2015-06-29
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多