2017-03-08 9 views
0

OpenWrtでは、Pythonコード(正確にはミニPython)を実行することは可能ですが、単純な「Hello World」Pythonスクリプトでも6-8秒走る。OpenWrt(組み込みLinux)上のpythonスクリプトの速度を上げる方法(pycが見つからない)

私の調査から、すべてのPythonモジュールがPyソースコードで保持され、各実行時にメモリ内でコンパイルされることが確認されています。

20個以上のモジュールがあり、OpenWrtが小さな組み込み機器で動作するため、これはPythonスクリプトの中でも最も簡単なものでも起動が遅くなります。

OpenWrtでPythonコードの実行を高速化する方法はありますか?

+0

OpenWrtはトレードオフです。この場合、スペースと時間はトレードオフです。このコードはWi-Fiルーターで実行する必要がありますか? –

+0

はい、このコードはWi-Fiルーターで稼動する必要があります。つまり、Wi-Fiルーターではなく、ワイファイチップを持っている組み込みシステムです。このデバイスでは、センサーデータを収集して処理するためにPythonを使用しています。システムがどのように設計されているので、データをクラウドに送信することは不可能であるため、ローカルで処理する必要があります。 – valentt

答えて

0

Pythonスクリプトを10倍以上高速化するには、すべてのライブラリをプリコンパイルしてpycファイルとして書き込むオプションがあります。

これをしないと、すべてのライブラリが毎回動的にコンパイルされ、これは非常にCPU時間のかかる作業です。

時間の余裕があるため、空き容量が4MB以上のデバイスが必要です。

私のやり方は、pycファイルが150個未満であれば起動時にcheckを作成し、pythonからpycにpythonをコンパイルする場合は作成することです。

# 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ディレクトリを追加してスクリプトを作成しました。

# 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スクリプトを楽しんでいることです。

関連する問題