如何在OpenWrt(嵌入式Linux)上加速python脚本(缺少pyc)

时间:2017-03-08 21:24:31

标签: python linux openwrt

在OpenWrt上,可以运行Python代码(准确地说就是迷你Python),但即便是一个简单的" Hello World" Python脚本需要6-8秒才能运行。

从我的调查中可以看出,所有Python模块都保存在py源代码中,并且在每次运行时都在内存中编译。

由于存在大约20个或更多模块且OpenWrt在小型嵌入式设备上运行,因此即使是最简单的Python脚本也会导致启动延迟。

如何加速OpenWrt上Python代码的执行?

1 个答案:

答案 0 :(得分:2)

为了将Python脚本加速10倍以上,可以选择预编译所有库并将其编写为pyc文件。

如果你不这样做,那么每次动态编译所有的库,这是非常麻烦的时间密集型任务。

你需要拥有至少4MB可用空间的设备,因为你需要时空处理空间。

我的诀窍是如果少于150个pyc文件就创建启动检查,如果要将python从py编译到pyc。

# count python pyc modules and generate if needed
pyc=`find / -name *.pyc | wc -l`
if [ $pyc -lt 150 ]; then
  python -m compileall
fi

如果仍然看到python执行速度慢,请检查某些python库是否位于某些子目录中。例如python-serial是为了获得全速,我将python-serial目录添加到statup up脚本。

# count python pyc modules and generate if needed
pyc=`find / -name *.pyc | wc -l`
if [ $pyc -lt 400 ]; then
  python -m compileall
  python -m compileall /usr/lib/python2.7/site-packages/serial/*.py
  python -m compileall /usr/lib/python2.7/site-packages/serial/tools/*.py
  python -m compileall /usr/lib/python2.7/site-
packages/serial/urlhandler/*.py
fi

就是这样,在OpenWrt / Lede系统上享受超快的python脚本!