簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM