2014-10-17 81 views
0

python中的並行化大型稀疏矩陣M的創建的正確方法是什麼?理想情況下,每個線程將負責爲行的子集設置值。得到的矩陣將被輸入到分類器。 python全局解釋器鎖是否阻止了高效的並行化?Python - 矩陣的並行構造

假設輸入列表I由元組(i,j,k)組成。慾望是一

M = scipy.sparse.dok_matrix((num_rows, num_cols)) 
for i, j, k in I: 
    M[i, j] = k 
+0

這是一個相當開放的問題;並行性有很多種方法。我的個人股票是ipython平行,但你應該看看教程,而不是問這裏。 – mdurant 2014-10-17 18:37:38

+1

*「python全局解釋器鎖是否阻止高效的並行化?」*是的,它的確如此。 – dano 2014-10-17 18:43:12

+0

你的數據集有多大?如你想要處理多少矩陣行? – 2014-10-18 00:05:25

回答

0

從理論上講,以矩陣的所有更新可以同時進行設置M [I,J] = K的所有元組,假定元組的列表中不包含不一致的數據,即每個矩陣元素至多被設置一次。

當GIL退出並且矩陣可以在任意數量的線程中共享時,所有這一切歸結爲scipy.sparse.dok_matrix是否能夠接受併發更新。

不幸的是scipy.sparse.dok_matrix文檔和http://wiki.scipy.org/ParallelProgramming似乎都不能回答這個問題。