两种模式在资源方面是否存在差异,尤其是内存?我在标题中指的是Python,但如果对许多解释语言(Octave等等)有一个共同的解释,那将非常有帮助。
由于
答案 0 :(得分: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的嵌入式系统上运行,否则我认为差别不大。
请注意,如果您将代码编写为模块然后导入它,它将被编译为字节码并保存。我相信这会减少内存消耗,并减少后续调用的启动时间。您可能希望运行一些测试以了解其中的差异。