2016-08-24 35 views
-2

我想加快Python中循環的速度。 下面有一個代碼。如何加速python中的簡單循環

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

dpath.util.search是生成器。 我怎麼能加速這個簡單的循環?

回答

2

那麼,循環本身是不必要的;你可以讓Python中做一個函數調用的循環&追加工作,而不是與許多電話:

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

我不知道'dpath',但如果'產生= TRUE'是什麼使得它充當生成器,當你批量擴展時,它有時會更快地不作爲生成器,所以如果它返回一個「list」,你可能會放棄這個參數。 – ShadowRanger

+0

首先,感謝您的回答。我測試過它,但不幸的是沒有加速的提高,我想加快近C代碼的速度。我認爲cython是解決它的方法,但我不知道如何將cython應用於此代碼。你能給我一些關於cython的想法嗎? – PJW

+0

你看過[numba](http://numba.pydata.org/)嗎?另外我用[ObjectPath](https://github.com/adriank/ObjectPath)獲得了比dpath更多的成功,但我無法評論兩個 – FujiApple