在OpenWrt上,可以运行Python代码(准确地说就是迷你Python),但即便是一个简单的" Hello World" Python脚本需要6-8秒才能运行。
从我的调查中可以看出,所有Python模块都保存在py源代码中,并且在每次运行时都在内存中编译。
由于存在大约20个或更多模块且OpenWrt在小型嵌入式设备上运行,因此即使是最简单的Python脚本也会导致启动延迟。
如何加速OpenWrt上Python代码的执行?
答案 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脚本!