2016-08-24 20 views
-2

私はPythonのループの速度を加速したいと思います。 下記のコードがあります。Pythonの単純なループを高速化する方法

for x in dpath.util.search(self.data, "**", yielded=True): 
     self.contentsList.append(x) 

dpath.util.searchはジェネレータです。 どうすればこの単純なループをスピードアップできますか?

答えて

2

まあ、ループ自体は不要です。私は `dpath`を知りませんが、`もたらし= true`には、それはとして機能するものであれば

self.contentsList.extend(dpath.util.search(self.data, "**", yielded=True)) 
+0

:あなたは、Pythonは、との代わりに多くのコールの1つの関数呼び出しでループ&アペンド仕事をやらせることができジェネレータでは、大量の 'extend'を行っているときにジェネレータとして動作しない方が速い場合がありますので、' list'を返すとその引数を削除する可能性があります。 – ShadowRanger

+0

まず、あなたの答えに感謝します。私はそれをテストしましたが、残念ながらスピードアップの強化はありません、私はほぼCコードの速度をスピードアップしたい。私はcythonはそれを解決する方法だと思ったが、私はこのコードにcythonをどのように適用するか分からない。あなたはサイモンについて私に何か考えを教えてください。 – PJW

+0

あなたは[numba](http://numba.pydata.org/)を見ましたか?また、[ObjectPath](https://github.com/adriank/ObjectPath)でdpathより多くの成功を収めましたが、私は2つの相対的なスピードについてコメントすることはできません – FujiApple

関連する問題