[英]How to speed up python scripts on OpenWrt (embedded Linux) (missing pyc)
在OpenWrt上可以運行Python代碼(確切地說是微型Python),但是即使是簡單的“ Hello World” Python腳本也需要6到8秒的時間才能運行。
從我的調查中可以看出,所有Python模塊都保存在py源代碼中,並且在每次運行時都在內存中進行編譯。
由於有大約20個或更多模塊,並且OpenWrt在小型嵌入式設備上運行,因此即使啟動最簡單的Python腳本,也會導致延遲。
如何加快OpenWrt上Python代碼的執行速度?
為了將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就是這樣,為了獲得最快的速度,我在statup up腳本中添加了python-serial目錄。
# 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腳本!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.