2
我有一個這樣的文件:並行化設定交叉點操作?
A 1
A 1
A 2
A 3
B 2
B 3
C 2
C 3
我轉換成如下的數據結構:
s = [set([1, 2, 3]), set([2, 3]), set([2,3])]
要查找所有2組合的交點的長度,我使用以下:
from itertools import combinations
for i in combinations(s, 2):
inter = i[0] & i[1]
print len(inter)
的s
大小是300000個每個具有約1000的長度不同的集合。有兩個瓶頸:
- 讀文件
- 計算交點
的長度第一個是不可避免的也許但第二個可以得到改善。我有一臺64核心的機器,所以我想知道如何並行化這個程序。是否有某種地圖縮減庫可用於多核機器?
我遇到了這個http://www.parallelpython.com/。它也許對你有用。 – spicavigo
另外,你看看python的多處理模塊。 http://docs.python.org/library/multiprocessing.html – spicavigo
您是否嘗試過在每次打印結果時都不打印每一個結果,而是採用計算的方式,而是收集數據(使用列表理解)和/或將其寫入文件(可能通過發電機)等? –